首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从核心数据加载的iPhone UIImage逆时针旋转90度。怎么修?

从核心数据加载的iPhone UIImage逆时针旋转90度。怎么修?
EN

Stack Overflow用户
提问于 2012-04-20 11:48:50
回答 5查看 1.8K关注 0票数 4

我正在使用AVCaptureSession从摄像机中获取图像:

代码语言:javascript
运行
复制
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection

图像被转换为UIImage并添加到图像视图中。该图像按预期以纵向方向显示。

我正在尝试将图像保存到捕获会话之间的核心数据中。我的核心数据实体具有一个具有二进制数据类型的图像属性。

代码语言:javascript
运行
复制
coreDataEntity.image = UIImagePNGRepresentation(imageView.image);

一旦用户重新加载先前保存的会话,图像视图将使用以下方法恢复其映像:

代码语言:javascript
运行
复制
 imageView.image = [UIImage imageWithData:coreDataEntity.image];

然而,恢复的图像是逆时针旋转90度,顶部指向左边。

图像是在哪一点旋转的?是在保存期间还是在从核心数据加载期间?

我有一种方法可以将一个UIImage旋转90度,但是在随后重新加载相同的图像时,它会被旋转90度。我怎么知道我已经旋转了一次UIImage?

谢谢你的帮助!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-06-19 15:26:01

一年后,你可能自己解决了这个问题,但我自己最近也经历过这个问题,我想我会提出我的解决方案。

我将存储的图像格式更改为JPEG。

变化

代码语言:javascript
运行
复制
coreDataEntity.image = UIImagePNGRepresentation(imageView.image);

代码语言:javascript
运行
复制
coreDataEntity.image = UIImageJPEGRepresentation(imageView.image,1.0f);

图像像以前一样被恢复。

代码语言:javascript
运行
复制
imageView.image = [UIImage imageWithData:coreDataEntity.image];

希望这能帮上忙。

票数 11
EN

Stack Overflow用户

发布于 2012-04-20 12:00:48

我不会强制数据库中的格式。通过在数据库中存储PNG之前将其转换为PNG,您将删除可能需要的信息(比如定位)。

如果我的假设是正确的,那么尝试像这样序列化UIImage:

代码语言:javascript
运行
复制
[NSKeyedArchiver archivedDataWithRootObject:image]

,然后用这个反序列化

代码语言:javascript
运行
复制
[NSKeyedUnarchiver unarchiveObjectWithData:imageData]

另外,一定要检查NSValueTransformer,它可以封装此转换,这样您就不必在它工作后再处理它。

票数 5
EN

Stack Overflow用户

发布于 2021-02-15 00:39:09

使用

代码语言:javascript
运行
复制
let imageData = image.jpegData(compressionQuality: 1)

而不是

代码语言:javascript
运行
复制
let imageData = image.pngData()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10245649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档