我正在使用AVCaptureSession从摄像机中获取图像:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection图像被转换为UIImage并添加到图像视图中。该图像按预期以纵向方向显示。
我正在尝试将图像保存到捕获会话之间的核心数据中。我的核心数据实体具有一个具有二进制数据类型的图像属性。
coreDataEntity.image = UIImagePNGRepresentation(imageView.image);一旦用户重新加载先前保存的会话,图像视图将使用以下方法恢复其映像:
imageView.image = [UIImage imageWithData:coreDataEntity.image];然而,恢复的图像是逆时针旋转90度,顶部指向左边。
图像是在哪一点旋转的?是在保存期间还是在从核心数据加载期间?
我有一种方法可以将一个UIImage旋转90度,但是在随后重新加载相同的图像时,它会被旋转90度。我怎么知道我已经旋转了一次UIImage?
谢谢你的帮助!
发布于 2013-06-19 15:26:01
一年后,你可能自己解决了这个问题,但我自己最近也经历过这个问题,我想我会提出我的解决方案。
我将存储的图像格式更改为JPEG。
变化
coreDataEntity.image = UIImagePNGRepresentation(imageView.image);至
coreDataEntity.image = UIImageJPEGRepresentation(imageView.image,1.0f);图像像以前一样被恢复。
imageView.image = [UIImage imageWithData:coreDataEntity.image];希望这能帮上忙。
发布于 2012-04-20 12:00:48
我不会强制数据库中的格式。通过在数据库中存储PNG之前将其转换为PNG,您将删除可能需要的信息(比如定位)。
如果我的假设是正确的,那么尝试像这样序列化UIImage:
[NSKeyedArchiver archivedDataWithRootObject:image],然后用这个反序列化
[NSKeyedUnarchiver unarchiveObjectWithData:imageData]另外,一定要检查NSValueTransformer,它可以封装此转换,这样您就不必在它工作后再处理它。
发布于 2021-02-15 00:39:09
使用
let imageData = image.jpegData(compressionQuality: 1)而不是
let imageData = image.pngData()https://stackoverflow.com/questions/10245649
复制相似问题