【问题标题】:Saving a UIView whose size 10000x10000 to the album将大小为 10000x10000 的 UIView 保存到相册
【发布时间】:2015-05-12 16:29:03
【问题描述】:

我有一个 10000x10000 UIView 并想将其图像保存到 iOS 中的照片中。但是,在保存如下图像时,它无法保持其原始分辨率(即 10000x10000)并且我获得了低分辨率图像。

   UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0);
   view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: false);
   var image = UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();
   UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

如何以原始分辨率保存 UIView?非常感谢...

【问题讨论】:

  • it cannot keep its native resolution 是什么意思?你收到错误了吗?
  • 不,我没有任何错误。当我在照片应用程序中打开图像并放大它时,图像变得模糊,不像我的应用程序。总之,UIView是以低分辨率保存的。
  • 等等...你怎么有一个 10000x10000 的 UIView?如果它完整地显示在您的屏幕上,那么它一定是被缩小了。

标签: ios image uiview save photos


【解决方案1】:

问题在于这些行:

UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0);
view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: false);

您将图像的绘图上下文设置为 view.bounds.size 的大小,然后拍摄视图的快照,因此 image 将是您屏幕的快照,等于您的屏幕大小。如果你不想缩小你的形象,那就不要。删除前四行,从您的UIImageView 获取图像(或者您正在显示图像),然后简单地保存图像,例如:

var image = imageView.image
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

【讨论】:

  • 哦,刚刚看到该图像是您的 10000x10000 视图的图像,所以我的回答仅说明了问题,而不是解决方案。正如我在您的问题下的评论中所写:您如何拥有 10000x10000 UIView?如果它完整地显示在您的屏幕上,那么它一定是被缩小了。
  • 我使用 ScrollView 这样屏幕就不会显示整个视图。
  • @birsorubircevap 明白了。好吧,您的屏幕截图当前是屏幕的大小。您是否能够使用当前代码捕获整个滚动视图内容?
  • @birsorubircevap 如果是这样,我建议将 view.bounds 的实例替换为滚动视图的内容边界。
  • 没办法。空白屏幕已保存。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-14
  • 2016-03-28
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
相关资源
最近更新 更多