Iphone 将映像添加到Mail-MFMailComposeViewController时出错
我正在尝试使用MFMailComposeViewController发送一个已添加到项目中的图像 我在模拟器中尝试了这个方法,效果很好,我也可以在文本字段中看到图像,但当我尝试发送邮件时,控制台上出现以下错误: 2月10日16:22:02 Markus-macbook-pro.speedport.ip RMC Konus[1825]:CGImageCreate:无效图像大小:0 x 0 我的代码:Iphone 将映像添加到Mail-MFMailComposeViewController时出错,iphone,ios,objective-c,xcode,Iphone,Ios,Objective C,Xcode,我正在尝试使用MFMailComposeViewController发送一个已添加到项目中的图像 我在模拟器中尝试了这个方法,效果很好,我也可以在文本字段中看到图像,但当我尝试发送邮件时,控制台上出现以下错误: 2月10日16:22:02 Markus-macbook-pro.speedport.ip RMC Konus[1825]:CGImageCreate:无效图像大小:0 x 0 我的代码: //Get the Image UIImage *image = [UIImage imageNa
//Get the Image
UIImage *image = [UIImage imageNamed:@"image.png"];
NSData *imageData = UIImagePNGRepresentation(image);
//Create the Mail View
MFMailComposeViewController *mailCV = [[MFMailComposeViewController alloc] init];
[mailCV setMailComposeDelegate:self];
[mailCV addAttachmentData:imageData mimeType:@"image/png" fileName:@"exGraphic.png"];
//Show the View Controller
[self presentViewController:mailCV animated:YES completion:nil];
UIImagePNGRepresentation的返回值(来自apple文档)- 包含PNG数据的数据对象,如果出现问题,则为nil 生成数据。如果图像没有显示,此函数可能返回nil 数据,或者如果基础CGImageRef包含不受支持的 位图格式 这意味着检查您的图像是否支持将其转换为png格式的NSData,因为您在此处接收到空值。错误
cImageCreate:无效图像大小:0 x 0。
表示该图像为空值。通过更改图像进行检查。也可以在不使用
[UIImage imageNamed:@”“]
的情况下进行检查,因为此方法有许多缺点
还有一件事,您已经将image.png图像转换为NSData并将另一个图像exGraphic.png作为附件发送,请检查它问题只会出现在模拟器中。
我在许多不同的设备上检查这些代码,它仍然可以正常工作。所以我想说,这是模拟器的问题…不确定这是否有助于解决您遇到的错误,但是您是否考虑过直接从图像文件加载图像的
NSData
?我的意思是通过调用NSString*path=[[NSBundle mainBundle]pathForResource:@“image”of type:@“png”],获取应用程序包中图像的路径编码>然后使用[NSData DATA WITH CONTENTS OFFILE:path]
加载NSData
?在当前的实现中,在调用-imageNamed:
时首先对.png图像进行解码,然后使用UIImagePNGRepresentation
再次对其进行编码。这似乎是不合理的开销。你说你实际上是在发送电子邮件。这意味着您必须在真实设备上运行应用程序。您确定图像的名称确实是image.png
,而不是像image.png
或image.png
这样的名称吗?在真正的设备上,案例很重要。在调试器中运行代码并验证image
不是nil
。我已经检查过了,NSData对象不是nil@伊戈尔:谢谢你关于图像加载的建议,我已经更改了这个,但是错误仍然存在,这是一个半随机的建议,可能值得尝试。如果您尝试附加JPEG图像表示而不是PNG,您是否检查了错误是否仍然出现?@Egor,请查看我对Ravindra答案的评论。我认为问题不在于图像,正如我看到的,我可以在邮件视图中看到图像。错误只会出现,如果在MailComposer视图中出现警告对话框,则我已选中此项,NSData对象不是nilOk,我已选中此项,我不会发送任何其他具有此名称的图像。但我发现了另一件事。只有当主题字段为空且我收到警告时,错误才会出现,即我添加了一个空主题。如果我在“主题”字段中添加一些文本,则不会出现错误…这是错误还是警告?出现此消息时,应用程序是否崩溃?这可能是一个关于邮件如何在其上实现的模拟器怪癖(它不是真正的邮件应用程序)。试着省去附件代码,看看当你省去主题时,错误是否仍然发生。@Tim:应用程序没有崩溃,我只收到我在问题中发布的消息。如果我留下附件代码,错误就不会出现……你在模拟器上看到这个消息了吗?