使用UIActivityViewController共享图像的两种方法的比较

时间:2017-07-18 18:57:36

标签: ios swift image optimization uiactivityviewcontroller

我有两种方法可以拍摄屏幕快照并将捕获的图像分享给展示UIActivityViewController的其他应用。

方法1只需获取屏幕快照并将捕获的图像共享为UIImage

方法2非常相似,但包括一个额外的步骤。方法2采用屏幕快照,但在将捕获的图像共享为UIImagePNGRepresentation之前使用NSData

使用的每种方法都会产生共享图像质量的差异。方法1产生无损(即消息和邮件)或有损(即Notes,Photos,Messenger)的图像质量,而方法2产生对所有应用程序无损的图像质量(除了产生错误的Messenger {{1并且无法分享)。

使用方法2是保持共享图像完美的明显选择,但是......

问题

为什么Messenger会产生错误Unable to load content

可以采取哪些措施来更改下面的代码,或者可以使用哪个对象来确保所有图像共享,1)采用无损格式,以及2)没有错误?

表格

Table of outcomes using Method 1 and Method 2.

代码

Unable to load content

图片

在iOS中展示import UIKit class ViewController: UIViewController { var imageSnapshot: UIImage! var imageSnapshotPNG: NSData! func screenSnapshot() { UIGraphicsBeginImageContextWithOptions(self.view.frame.size, false, 0) self.view.drawViewHierarchyInRect(CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height), afterScreenUpdates: false) imageSnapshot = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() } @IBAction func shareImage(sender: UIButton) { screenSnapshot() let activity = UIActivityViewController(activityItems: [imageSnapshot], applicationActivities: nil) self.presentViewController(activity, animated: true, completion: nil) } @IBAction func shareImagePNG(sender: UIButton) { screenSnapshot() imageSnapshotPNG = UIImagePNGRepresentation(imageSnapshot)! let activity = UIActivityViewController(activityItems: [imageSnapshotPNG], applicationActivities: nil) self.presentViewController(activity, animated: true, completion: nil) } }

enter image description here

“无法加载内容”错误消息。

"Unable to load content" error message.

0 个答案:

没有答案