iPhone iOS保存从UIImageJPEGRepresentation()获取的数据第二次失败:ImageIO:CGImageRead\u mapData';打开';失败

iPhone iOS保存从UIImageJPEGRepresentation()获取的数据第二次失败:ImageIO:CGImageRead\u mapData';打开';失败,iphone,objective-c,ios,uiimage,javax.imageio,Iphone,Objective C,Ios,Uiimage,Javax.imageio,我的UIImage操作遇到了一个奇怪的问题 我正在进行dropbox同步,必须将我的图像存储为本地文件。为此,我使用UIImagePNGRepresentation(image)或uiimagejpegresentation(image,0.66) 以下是我的典型工作流程: 用户选择图像或拍照 将图像分配给imageView 使用以下方法将图像视图的UIImage保存到文件中 下次用户重新打开应用程序时,我使用 [UIImage imageWithContentsOfFile:fullImage

我的UIImage操作遇到了一个奇怪的问题

我正在进行dropbox同步,必须将我的图像存储为本地文件。为此,我使用
UIImagePNGRepresentation(image)
uiimagejpegresentation(image,0.66)

以下是我的典型工作流程: 用户选择图像或拍照 将图像分配给imageView 使用以下方法将图像视图的UIImage保存到文件中

下次用户重新打开应用程序时,我使用

[UIImage imageWithContentsOfFile:fullImagePath]
这只管用一次

第二次运行该例程时,再次尝试将映像保存到磁盘时,会收到下面列出的错误消息

//saving the image
NSData* data = isPNG?UIImagePNGRepresentation(image):UIImageJPEGRepresentation(image, 0.66);
BOOL success =   [data writeToFile:filepath atomically:YES];
if(!success)
{
    DLog(@"failed to write to file: %@",filepath );
}


//loading the image
[UIImage imageWithContentsOfFile:fullImagePath]
当我尝试重新保存以前已转换为JPEG或PNG的图像时,会出现此错误

2012-05-21 08:16:06.680   file already exists: NO
ImageIO: CGImageRead_mapData 'open' failed '/var/mobile/Applications/C1312BF8-C648-4397-82F3-D93E4FAAD35F/Documents/imageData/LogoImage.jpg'
error = 2 (No such file or directory)
May 21 08:16:06  <Error>: ImageIO: JPEG Not a JPEG file: starts with 0xff 0xd9
May 21 08:16:06  <Error>: ImageIO: JPEG Application transferred too few scanlines
2012-05-21 08:16:06.680文件已存在:否
ImageIO:CGImageRead(地图数据“打开”失败)/var/mobile/Applications/C1312BF8-C648-4397-82F3-D93E4FAAD35F/Documents/imageData/LogoImage.jpg)
错误=2(没有这样的文件或目录)
May 21 08:16:06:ImageIO:JPEG非JPEG文件:以0xff 0xd9开头
5月21日08:16:06:ImageIO:JPEG应用程序传输的扫描线太少
在我看来,发生此错误的原因是我再次尝试将图像重新保存为JPEG。如果我要求视图在上下文中呈现自身(有效地创建新图像),则不会发生错误


有人知道我做错了什么吗?我是否因为尝试将UIImage转换为数据、重新加载并在向用户显示后再次尝试转换而丢失了某种元数据?

我以前遇到过类似的情况。它看起来像是
imageWithContentsOfFile
只要用来创建的
UIImage
仍然存在,它就会保持文件的打开状态。当时,,我通过将文件读入
NSData
中,然后从
NSData
中创建
UIImage
而不是直接创建文件来解决这个问题。

我认为问题可能是您使用jpeg格式保存数据并访问png格式,即一旦保存了jpeg图像数据,然后imageview访问png的NSData时代表性问题可能非常类似于:你们和你们孩子的孩子将永远是令人敬畏的!这发生在我使用HJManagedImageV打开HJCache库时。我在写这篇文章,所以搜索引擎会注意到这种联系。谢谢妈的,你帮我省了几个小时的工作。欠你一个人情。非常感谢你!!!我花了一天中最好的时间,试图让NSFileManager保存/加载一张该死的图片!!!最后,你的回答奏效了,再次感谢:)愿上帝保佑你的灵魂。但愿我能不止一次投票!花了一天的时间想弄明白。你的想法奏效了。非常感谢。