Ios 与UIActivityViewController共享PNG图像到Facebook Messenger总是失败
这是一个有专业知识的专家的问题 可以使用Ios 与UIActivityViewController共享PNG图像到Facebook Messenger总是失败,ios,swift,xcode,uiactivityviewcontroller,messenger,Ios,Swift,Xcode,Uiactivityviewcontroller,Messenger,这是一个有专业知识的专家的问题 可以使用UIActivityViewController成功地将高质量无损PNG图像共享到许多共享平台,但Facebook Messenger除外,它每次都会失败。提供的错误是“无法加载内容” Facebook Messenger中的UIImagePNGRepresentationNSData和AnyObject均失败,UIImage但是成功共享,但输出的图像似乎是JPG,质量低且有损 问题: var myImage: UIImage! var myImageP
UIActivityViewController
成功地将高质量无损PNG
图像共享到许多共享平台,但Facebook Messenger除外,它每次都会失败。提供的错误是“无法加载内容”
Facebook Messenger中的UIImagePNGRepresentation
NSData
和AnyObject
均失败,UIImage
但是成功共享,但输出的图像似乎是JPG,质量低且有损
问题:
var myImage: UIImage!
var myImagePNG: NSData!
//var myImagePNG: AnyObject!
func sharePNG() { …
myImagePNG = UIImagePNGRepresentation(myImage)!
let activity = UIActivityViewController(activityItems: [myImagePNG], applicationActivities: nil)
self.presentViewController(activity, animated: true, completion: nil)
}
这里发生了什么以及如何纠正——我如何才能成功地将高质量无损PNG图像与UIActivityViewController
共享到Facebook Messenger
这是Facebook Messenger、Xcode或UIActivityViewController的问题还是限制
除了NSData
和AnyObject
(和UIImage
)之外,还有其他可行的方法吗
代码:
var myImage: UIImage!
var myImagePNG: NSData!
//var myImagePNG: AnyObject!
func sharePNG() { …
myImagePNG = UIImagePNGRepresentation(myImage)!
let activity = UIActivityViewController(activityItems: [myImagePNG], applicationActivities: nil)
self.presentViewController(activity, animated: true, completion: nil)
}
图像:
var myImage: UIImage!
var myImagePNG: NSData!
//var myImagePNG: AnyObject!
func sharePNG() { …
myImagePNG = UIImagePNGRepresentation(myImage)!
let activity = UIActivityViewController(activityItems: [myImagePNG], applicationActivities: nil)
self.presentViewController(activity, animated: true, completion: nil)
}
要保持图像质量,请尝试使用
UIGraphicsBeginImageContextWithOptions()
更好地控制从UIActivityController共享的内容的最佳方法不仅仅是将其编码为数据,而是将数据写入临时URL,然后将URL传递给UIActivityController。通过这种方式,您可以控制共享文件的标题,如果他们选择保存文件或将其空投到某处,这一点很重要。如果你只是共享数据,你会得到一些真正随机的文件名。这适用于通过Facebook Messenger发送PNG:
枚举图像处理错误:错误{
案例无法创建PNGData
}
private func exportImageAsPNG(image:UIImage,文件名:String)抛出{
guard let pngData=image.pngData()else{throw ImageProcessingError.couldNotCreatePNGData}
让temporaryURL=FileManager.default.temporaryDirectory
.appendingPathComponent(文件名)
.appendingPathExtension(“png”)
尝试pngData.write(到:临时URL,选项:[])
//使用临时URL呈现UIActivityViewController
}
你想做什么?你应该使用
myImage
而不是myImagePNG
@Codus,谢谢,但我认为你需要重新阅读这个问题myImage
提供有损低质量图像输出myImagePNG
在与除Messenger以外的所有应用程序共享时提供无损高质量图像输出,但Messenger失败。我想在共享到Messenger时获得无损高质量图像输出,这就是我想要做的。我想使用myImagePNG
就像我在与所有其他应用共享时成功使用的一样。我也有同样的问题。仅在共享到Facebook Messenger时发生。你已经找到解决方案了吗?@codeDude很抱歉延迟回复。遗憾的是,没有找到解决方案。我承认Facebook Messenger目前不与iOS共享合作。共享时会保留有损图像。如果这就是Facebook Messenger想要的,那就是Facebook Messenger得到的,有损图像。:-)@user4806509感谢您为这件事透露了一些信息。呵呵,是的,这是他们的损失……有损图像,谢谢。我已经使用了UIGraphicsBeginImageContextWithOptions()
,然后使用drawViewHierarchyInRect
来捕获。捕获是完美的质量。当Messenger出现问题时,实际上是在分享的时候。