如何使用 Xamarin IOS 压缩图像但不调整其大小?

Vib*_*aya 3 xamarin.ios xamarin

我需要将图像上传到非常大的服务器,但我想保持宽高比但压缩文件的大小,因为我正在上传多个文件。

小智 5

如果您不想调整图像大小,则以 JPEG 和 PNG 格式发送将使其比仅发送位图数据更小。您可以获得NSDataPNG 或 JPEG 格式的图像表示。每种格式都有一些优点/缺点,但 JPEG 允许牺牲质量以获得更多压缩。

*假设您有一个UIImage命名的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.
}
Run Code Online (Sandbox Code Playgroud)

您还可以在循环中使用AsJPEG递减的压缩值来尝试使图像大小低于特定阈值。不过,这可能有点慢,因此您必须权衡特定用途的好处。