【问题标题】:How to Compress Image but not resize it Using Xamarin IOS?如何使用 Xamarin IOS 压缩图像但不调整其大小?
【发布时间】:2016-07-15 20:41:49
【问题描述】:

我需要上传一个相当大的图片到服务器,但我想保持纵横比但压缩文件的大小,因为我要上传多个文件。

【问题讨论】:

  • 在问题中你说保持纵横比,但在标题中你说不调整大小。您是否愿意在保持纵横比的同时调整图像的大小以具有更小的宽度和高度?您可以通过发送带有UIImage.AsJPEG()UIImage.AsPNG() 的JPG 或PNG 表示而不调整大小来获得一些压缩。调整为更小的图像可以节省更多空间。

标签: xamarin xamarin.ios


【解决方案1】:

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

*假设您有一个名为imageUIImage

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.
}

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

【讨论】:

  • @VibhaRKedilaya 很高兴我能帮上忙。快乐发展。
  • 你有没有在 Xamarin Android 中实现相同的想法?
  • Bitmap Compress 应该可以解决问题。格式参数将是 0-100 而不是 0-1。您可以使用MemoryStream 作为流,并将其准备回byte[]
猜你喜欢
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 2012-07-30
  • 2018-01-18
  • 1970-01-01
  • 2010-10-05
  • 2018-02-25
相关资源
最近更新 更多