Xojo iOS / QRコード生成

Xojo iOS にてQRコード生成をShift JIS形式で生成するモジュール

Function generateQR(qrString As Text, width As Single, height As Single) As iOSImage
 Declare Function NSClassFromString Lib "Foundation" (aClassName as CFStringRef) as Ptr
 
 // - (CIImage *)createQRForString:(NSString *)qrString
 // {
 // // Need to convert the string to a UTF-8 encoded NSData object
 // NSData *stringData = [qrString dataUsingEncoding:NSUTF8StringEncoding];
 
 
 Declare Function dataUsingEncoding Lib "Foundation" Selector "dataUsingEncoding:" (str As CFStringRef, enc As Integer) As Ptr
 
 Const NSShiftJISStringEncoding As Integer = 8
 
 Dim stringData As = dataUsingEncoding(qrString, NSShiftJISStringEncoding)
 
 // // Create the filter
 // CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
 
 Declare Function filterWithName Lib "UIKit" Selector "filterWithName:" (obj_ID As Ptr, filtername As CFStringRef) As Ptr
 
 Dim qrFilter As Ptr = filterWithName(NSClassFromString("CIFilter"), "CIQRCodeGenerator")
 
 // // Set the message content and error-correction level
 
 Declare sub setValue Lib "Foundation" Selector "setValue:forKey:" (obj_ID As Ptr, data As Ptr, Key As CFStringRef)
 
 setValue(qrFilter, stringData, "inputMessage")
 
 // [qrFilter setValue:@"M" forKey:@"inputCorrectionLevel"];
 
 Declare sub setValue1 Lib "Foundation" Selector "setValue:forKey:" (obj_ID As Ptr, data As CFStringRef, Key As CFStringRef)
 
 setValue1(qrFilter, "M", "inputCorrectionLevel")
 
 Declare Function valueForKey Lib "Foundation" Selector "valueForKey:" (obj_ID As Ptr, key As CFStringRef) As Ptr
 
 Dim qrCIImage As Ptr = valueForKey(qrFilter, "outputImage") // ← CIImageを取得
 
 Declare Function imageWithCIImage Lib "UIKit" Selector "imageWithCIImage:" (obj_ID As Ptr, ciimage As Ptr) As Ptr
 
 Dim qrCodeImage As Ptr = imageWithCIImage(NSClassFromString("UIImage"), qrCIImage)
 
 Dim qrImageData As iOSBitmap = New iOSBitmap(width, height, 1.0, False)
 
 CGContextSetInterpolationQuality(qrImageData.Graphics.Handle, 1)
 
 'qrImageData.Graphics.Alpha = 0
 
 qrImageData.Graphics.DrawImage iOSImage.FromHandle(qrCodeImage), 0, 0, width, height
 
 Return qrImageData.Image 

End Function
This entry was posted in iOS, Xojo, メモ. Bookmark the permalink.

Comments are closed.