gpt4 book ai didi

ios - 使用 UIActivityViewController 将 PNG 图像共享到 Facebook Messenger 总是失败

转载 作者:搜寻专家 更新时间:2023-10-31 21:46:48 34 4
gpt4 key购买 nike

这是一个具有专业知识的专家的问题。

使用 UIActivityViewController 可以成功地将高质量的无损 PNG 图像分享到许多分享平台,但 Facebook Messenger 每次都失败。提供的错误是“无法加载内容”

UIImagePNGRepresentation NSDataAnyObject 在 Facebook Messenger 中都失败了,UIImage 但是分享成功但是 输出的图像似乎是 JPG,质量低且有损。

问题:

这里发生了什么以及如何纠正它——我如何使用 UIActivityViewController 成功地将高质量无损 PNG 图像分享到 Facebook Messenger?

这是 Facebook Messenger、Xcode 或 UIActivityViewController 的问题或限制吗?

NSDataAnyObject(以及 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)
}

图片:

enter image description here

最佳答案

更好地控制从 UIActivityController 共享的内容的最佳方法不仅仅是将其编码为数据,而是将该数据写入临时 URL,然后将 URL 传递给 UIActivityController。这样您就可以控制共享文件的标题,如果他们选择将文件保存或将其空投到某处,这一点很重要。如果您只是共享数据,您最终会得到一些非常随机的文件名。这适用于通过 Facebook Messenger 发送 PNG:

    enum ImageProcessingError: Error {
case couldNotCreatePNGData
}

private func exportImageAsPNG(_ image: UIImage, filename: String) throws {
guard let pngData = image.pngData() else { throw ImageProcessingError.couldNotCreatePNGData }
let temporaryURL = FileManager.default.temporaryDirectory
.appendingPathComponent(filename)
.appendingPathExtension("png")
try pngData.write(to: temporaryURL, options: [])
// present UIActivityViewController with the temporaryURL
}

关于ios - 使用 UIActivityViewController 将 PNG 图像共享到 Facebook Messenger 总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45179429/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com