【问题标题】:Better quality image from UIGraphicsGetImageFromCurrentImageContext()来自 UIGraphicsGetImageFromCurrentImageContext() 的更好质量的图像
【发布时间】:2013-08-03 07:07:32
【问题描述】:

我目前正在使用 UIGraphicsGetImageFromCurrentImageContext() 将内容的图像保存到用户的相机胶卷,但图像质量比我在模拟器中截屏时差。有什么办法可以改善吗?无论如何保存的图像是什么格式?骨肉瘤?有什么办法可以改变吗?

这是我的存档代码:

CGSize size = [content bounds].size;
UIGraphicsBeginImageContext(size);
[[content layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *originalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

UIImageWriteToSavedPhotosAlbum(originalImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

【问题讨论】:

  • 你的“size”有多大?如果它不是真的那么大,那么你的分辨率会很差。
  • 屏幕大小差不多。我没有在其他地方查看保存的图像。我把它保存在模拟器上,然后去了模拟器的相机胶卷,它看起来比在应用中差很多。

标签: ios objective-c core-graphics


【解决方案1】:

你应该使用 UIGraphicsBeginImageContext 而不是:

UIGraphicsBeginImageContextWithOptions(size, NO, 0);

【讨论】:

  • 我相信它会保存为 jpg。
  • 这只是使图像以正确的 conrentscale 渲染。 0 是默认值(等于[UIScreen mainscreen] scale)。要保存为 JPG 或 PNG,请在生成的图像上使用 UIImageJPGRepresentation 或 UimagePNGRepresentation。
  • 但这不是给我 NSData 吗?我是否使用该数据开始新图像,然后将该图像保存到相机胶卷?听起来很复杂...
  • 可以使用ALAssetsLibrary将图片数据写入库中。
  • 为什么在使用设备时会保存白色图像,但在模拟器上可以使用?
【解决方案2】:

如果你在视网膜显示器上,上下文的大小只有“真实”图像大小的一半。

尝试将大小加倍(或者正确使用视图的 contentScaleFactor)。

【讨论】:

  • 是的,这似乎是问题所在。如何使用 contentScaleFactor 放大输出图像?
猜你喜欢
  • 2010-10-20
  • 1970-01-01
  • 2015-06-15
  • 2013-12-10
  • 2014-05-10
  • 2011-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多