我需要将图像上传到相当大的服务器,但是我想保持纵横比但是压缩文件的大小,因为我上传了多个文件。
答案 0 :(得分:1)
如果您不想调整图片大小,那么将其作为JPEG和PNG发送将使其小于仅发送位图数据。您可以使用PNG或JPEG格式获取图像的NSData
。每种格式都有一些优点/缺点,但JPEG允许牺牲质量以获得更多压缩。
*假设您有一个名为UIImage
的{{1}}。
image
您还可以在循环中使用using(NSData pngImage = image.AsPNG()){
byte[] imageBytes = pngImage.ToArray();
// upload your image data, write to a file, etc.
}
// AsJPEG compression argument can be 0 to 1
// 0 is max compression (lowest quality), 1 is best quality
using(NSData jpgImage = image.AsJPEG(0.0f)){
byte[] imageBytes = jpgImage.ToArray();
// upload your image data, write to a file, etc.
}
来降低压缩值,以尝试将图像大小降至特定阈值以下。虽然这可能有点慢,所以你必须为特定用途增加收益。