UIimage到NSData返回Null

我创建了一个QR码图像并将其显示在UIImageView中

NSString *QRMessage = @"MESSAGE"; NSData *data = [QRMessage dataUsingEncoding:NSISOLatin1StringEncoding allowLossyConversion:false]; CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"]; [filter setValue:data forKey:@"inputMessage"]; [filter setValue:@"Q" forKey:@"inputCorrectionLevel"]; imageQRCode = filter.outputImage; // imageQRCode is CIImage ivQR.image = [UIImage imageWithCIImage: imageQRCode]; // ivQR is UIImageView 

我正在尝试保存图像,以便用户以某种方式将QR码发送给另一个人。 我首先尝试将它保存到像这样的“剪贴板”……

 UIPasteboard *pasteBoard = [UIPasteboard pasteboardWithName:UIPasteboardNameGeneral create:NO]; [pasteBoard setPersistent:true]; [pasteBoard setImage:ivQR.image]; 

…但似乎没有任何内容保存在剪贴板中。

那么我尝试将UIImage转换为NSData并将其添加为附件,如下所示:

 MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; picker.mailComposeDelegate = self; UIImage *imageToSend = [UIImage imageWithCIImage:imageQRCode]; NSData *data = UIImageJPEGRepresentation(imageToSend,1); [picker addAttachmentData:data mimeType:@"image/jpeg" fileName:@"QR.jpg"]; 

但似乎没有任何附件。

我做了一些测试,似乎我从“UIImageJPEGRepresentation()”回来的NSData给了我“Null”数据。 实际上图像显示在我的手机上,所以我想知道我是否只是将数据转换错了?

我的大部分“谷歌搜索”告诉我,我转换的方式是正确的。 但是大多数示例使用用户手机上的图片或添加到应用程序本身的图片。 我的照片是“创造的”……那么这会有所作为吗?

我的目标是允许用户复制到剪贴板,或添加为QR图像的附件。 非常感谢任何帮助。

CIImage转换为UIImage ,我发现imageWithCIImage经常不起作用。 我通常使用CIContext方法createCGImage ,然后createCGImage创建UIImage

 CIImage *ciImage = ... CIContext *context = [CIContext contextWithOptions:nil]; CGImageRef cgImage = [context createCGImage:ciImage fromRect:rect]; UIImage *image = [UIImage imageWithCGImage:cgImage]; CGImageRelease(cgImage); 

请参阅Core Image Programming Guide中的示例。