在运行时压缩图像大小

Compress imagesize during runtime

我的应用程序存在内存问题。它可以从用户的个人图库中挑选图像并将其存储在文件中以在屏幕上呈现。问题是图像大小的限制非常小。我发现这导致我设备上的几乎所有图像都太大而无法处理。因此该方法本身变得无用,因为它无法处理中等大小的图像。到目前为止,我只在 ios 台设备上遇到过这种情况。

有解决办法吗?我可以 compress/minimize 以任何方式将图像的大小缩小吗?将所有图像切割成相同的分辨率? (就像 Instagram 的系统)。

如果您想减小图像的字节大小,至少可以在 3 个方面进行操作:

  1. 减小图像尺寸(像素分辨率)。这几乎总是 导致质量下降,但如果您的用户正在观看小 屏幕设备,你不要调整太多,损失不会 重要的。您还可以使用插值来最小化视觉效果 调整大小时降级。
  2. 降低位深度(颜色分辨率)。如果图像是全彩色的(32 或每像素 24 位),您有时可以减少它 到较低的颜色数,例如使其成为 8 位。这又将 造成质量损失,但您可以使用抖动来减少它。
  3. 使用更好的压缩。大多数图像是 这些天已经压缩了,但在某些情况下你可以重新压缩 使文件变小的图像。一个例子是 JPEG,它 支持不同的质量因素。还有不同的 JPEG 中的子类型(颜色采样频率)。所以如果你保存一个 图像为 4:1:1 而不是 4:4:4,它将包含更少的颜色内容 并且字节大小变小,但差异通常不是 人眼明显。 post 有关于更改的详细信息 iOS.
  4. 上的 JPEG 质量因子