Генерация QR-кодов - PullRequest
       18

Генерация QR-кодов

5 голосов
/ 21 августа 2011

Я пишу приложение, которое будет генерировать qr-коды.

Большая часть логики программирования реализована.

Следующим шагом в этом процессе будет генерирование изображения qr-кода.

Самый простой код qr основан на сетке 21x21, в которой я должен сделать плитку (1x1) либо чёрно-белой.

Каков наилучший подход для этого.

Мне нужно:

  1. показать предварительный просмотр кода в приложении
  2. дать пользователювозможность сохранить код qr как изображение (думаю, .jpg).

Т.е. как сделать изображение, которое можно построить, как описано выше, и как его сохранить?

Anyпомощь приветствуется.

Ответы [ 2 ]

5 голосов
/ 21 августа 2011

Я бы лично попытался использовать сервис Google Charts для генерации изображения кода qr. Легко и просто. Вот пример изображения с сайта Google.

https://chart.googleapis.com/chart?chs=150x150&cht=qr&chl=Hello%20world&choe=UTF-8

Проверьте документы здесь: http://code.google.com/apis/chart/infographics/docs/qr_codes.html

4 голосов
/ 21 августа 2011

Для создания изображения QR-кода вам потребуется сгенерировать растровое изображение в вашем приложении. Пример кода для этого:

'Create a new QR bitmap image  
Dim bmp As New Bitmap(21, 21)

'Get the graphics object to manipulate the bitmap
Dim gr As Graphics = Graphics.FromImage(bmp)

'Set the background of the bitmap to white
gr.FillRectangle(Brushes.White, 0, 0, 21, 21)

'Draw position detection patterns
'Top Left
gr.DrawRectangle(Pens.Black, 0, 0, 6, 6)
gr.FillRectangle(Brushes.Black, 2, 2, 3, 3)

'Top Right
gr.DrawRectangle(Pens.Black, 14, 0, 6, 6)
gr.FillRectangle(Brushes.Black, 2, 16, 3, 3)

'Bottom Left
gr.DrawRectangle(Pens.Black, 0, 14, 6, 6)
gr.FillRectangle(Brushes.Black, 16, 2, 3, 3)


'*** Drawing pixels is done off the bitmap object, not the graphics object

'Arbitrary black pixel
bmp.SetPixel(8, 14, Color.Black)

'Top timing pattern
bmp.SetPixel(8, 6, Color.Black)
bmp.SetPixel(10, 6, Color.Black)
bmp.SetPixel(12, 6, Color.Black)

'Left timing pattern
bmp.SetPixel(6, 8, Color.Black)
bmp.SetPixel(6, 10, Color.Black)
bmp.SetPixel(6, 12, Color.Black)

'Add code here to set the rest of the pixels as needed

Чтобы отобразить изображение для конечного пользователя, вы можете использовать элемент управления PictureBox:

Me.PictureBox1.Image = bmp

И, наконец, чтобы сохранить растровое изображение, вы можете вызвать на нем функцию сохранения:

bmp.Save("C:\QR.jpg", Drawing.Imaging.ImageFormat.Jpeg)
...