为什么 imgur 为某些 png 图像添加白色背景,而另一些则不使用 Alamofire 和 Swift?

问题描述 投票:0回答:1

这就是我使用 Alamofire 和 Swift 将图像上传到 Imgur 的方法:

let url = URL(string: "https://api.imgur.com/3/upload")!
private var headers: [String: String] {
    ["X-Token": "[mytokenhere]", "Authorization": "Client-ID [myidhere]"]
}

Alamofire.upload(multipartFormData: { multipart in
    if let data = UIImagePNGRepresentation(image.image) {
         multipart.append(data, withName: "image", fileName: "image.png", mimeType: "image/png")
    }
}, to: url, headers: headers, encodingCompletion: { result in
    //convert result image from result here
})

上传前的示例,原始图像(如您所见,即使在这里它也添加了白色背景,为什么?):

上传后,返回上传图片的url:

最初在电脑和iPhone上它看起来像这样:

ios swift alamofire imgur
1个回答
0
投票

这就是当您的图像尺寸较大时 Imgur 的行为方式 - 它将您的图像转换为 JPEG。有关上传限制,请参阅Imgur 帮助页面

非动画图像(例如 JPG、PNG 等)的最大文件大小为 20MB。超过 5MB 的 PNG 文件将转换为 JPEG。

请注意,对于匿名上传,此限制为 1MB:

匿名上传的超过 1MB 的非动画图像和帐户持有者超过 5MB 的非动画图像将被有损压缩。

通过检查响应 JSON,您可以看到它已转换为 JPEG。 “类型”键将指示实际上传的图像的类型。例如,当我匿名上传大于1MB的png时返回:

{
    "status": 200,
    "success": true,
    "data": {
        ...
        "type": "image/jpeg", // <---
        ...
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.