Created
March 17, 2013 12:40
-
-
Save Thorium/5181342 to your computer and use it in GitHub Desktop.
Making QR-code image having contact information (VCard) with Google Chart API. If you scan this image with mobile phone, you can directly add new person to your contacts.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
open System | |
open System.IO | |
open System.Net | |
open System.Drawing | |
let ImageSize = 300 | |
let fetchImage (url : Uri) = | |
let req = WebRequest.Create (url) :?> HttpWebRequest | |
use stream = req.GetResponse().GetResponseStream() | |
Image.FromStream(stream) | |
let googleChartQRCodeImage mydata = | |
let addr = String.Format("http://chart.apis.google.com/chart?chs={0}x{0}&cht=qr&chl={1}&choe=ISO-8859-1", ImageSize, mydata) | |
new Uri(addr, UriKind.Absolute) | |
let vcard = @"BEGIN:VCARD | |
VERSION:3.0 | |
N:{1};{0}; | |
FN:{0} {1} | |
NICKNAME:{2} | |
ORG:{3} | |
ROLE:{4} | |
TITLE:{4} | |
PHOTO;MEDIATYPE={6}:{5} | |
TEL;TYPE=CELL:{7} | |
X-TWITTER:{8} | |
URL:{9} | |
EMAIL;TYPE=PREF,INTERNET:{10} | |
ADR;TYPE=HOME:;;{11};{12};;{13};{14} | |
LABEL;TYPE=HOME:{11}\n{13} {12}\n{14} | |
REV:{15} | |
END:VCARD | |
" | |
let googleChartUri contact = | |
String.Format(vcard, contact) | |
|> Uri.EscapeDataString | |
|> googleChartQRCodeImage | |
let sample : obj [] = [| | |
"Matt"; //first name | |
"Oneofus"; //surname | |
"matias"; //nickname | |
"Company & co."; //organization | |
"Guru"; //title | |
"http://www.wpclipart.com/signs_symbol/icons_oversized/male_user_icon.png"; //image url | |
"image/png"; //picture mime-type, eg. image/gif or image/jpeg | |
"+358 50 123 4567"; //cell phone | |
"Thoriumi"; // twitter account | |
"http://www.iki.fi/thorium/"; // url | |
"[email protected]"; //email | |
"Katuroad 1 A 5"; // street address | |
"Espoo"; //city | |
"02100"; //postal code | |
"Finland"; //country | |
System.DateTime.Now.ToString("yyyyMMddThhmmssZ"); // timestamp | |
|] | |
open System.Windows.Forms | |
let showImage = | |
let form = new Form() | |
let pb = new PictureBox() | |
pb.Image <- sample |> googleChartUri |> fetchImage | |
pb.SizeMode <- PictureBoxSizeMode.AutoSize | |
form.Height <- ImageSize+50 | |
form.Width <- ImageSize+50 | |
form.Controls.Add(pb) | |
form.Show() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment