Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 与UIActivityViewController共享PNG图像到Facebook Messenger总是失败_Ios_Swift_Xcode_Uiactivityviewcontroller_Messenger - Fatal编程技术网

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出现问题时,实际上是在分享的时候。