gpt4 book ai didi

swift 库 : How to convert animated Gif UIImage to NSData for Alamofire?

转载 作者:行者123 更新时间:2023-11-28 08:42:24 26 4
gpt4 key购买 nike

我正在使用 Alamofire 上传文件。用UIImage[JPEG|PNG]Representation()处理jpeg和png图片没问题,但是如何把动画gif文件转成NSData呢?

我试过 AnimatedGIFImageSerialization 但它太旧了,无法正常工作。如何将动画 Gif UIImage 转换为 NSData for Alamofire?

 func uploadFile() {
if let fileURL = NSBundle.mainBundle().URLForResource("AarioAi", withExtension: "jpeg"){
var imageData : NSData? = nil
if let image = UIImage(named: "loading2.gif") {
let filetype = "gif"
switch filetype {
case "jpeg", "jpg":
imageData = UIImageJPEGRepresentation(image, 1.0)
case "gif":
imageData = UIImagePNGRepresentation(image)
case "png":
imageData = UIImagePNGRepresentation(image)
default:
imageData = UIImagePNGRepresentation(image)
}
}

Alamofire.upload(.POST, Conf.URL.uploadFile, multipartFormData: {
// POST file[]=xxxx&&file[]=xxxxx
multipartFormData in
multipartFormData.appendBodyPart(fileURL: fileURL, name: "file[]")
multipartFormData.appendBodyPart(data: imageData!, name: "file[]", fileName: "loading2.gif", mimeType: "image/gif")

},
encodingCompletion: {
encodingResult in
switch encodingResult {
case .Success(let upload, _, _):
upload.responseJSON { response in
debugPrint(response)
}
case .Failure(let encodingError):
print(encodingError)
}
})
}
}

最佳答案

关键是首先不要从文件创建 UIImage。当您编写如下代码时:

UIImage(named: "loading2.gif")

您正在将文件解码为可以在屏幕上显示的格式。此外,UIImage 只能表示 GIF 的单个帧。即使对于 JPEG,在看起来有效的地方,您也会丢失所有元数据,并且可能会因重新编码而失去质量。更不用说,解码和重新编码比直接发送文件要慢得多。

与其这样做,只需按照此处的说明将文件内容直接加载到 NSData 对象中:

Convert Gif image to NSData

关于 swift 库 : How to convert animated Gif UIImage to NSData for Alamofire?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36177903/

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