【问题标题】:Compress imagesize during runtime在运行时压缩图像大小
【发布时间】:2015-11-23 22:49:44
【问题描述】:
我的应用程序存在一些内存问题。它可以从用户的个人画廊中挑选图像并将其存储在要在屏幕上呈现的文件中。问题是图像大小的限制非常小。我发现这导致我设备上的几乎所有图像都太大而无法处理。因此,该方法本身变得无用,因为它无法处理中等大小的图像。到目前为止,我只在 ios 设备上遇到过这种情况。
有解决办法吗?我可以以任何方式将图像的尺寸压缩/最小化到更小的尺寸吗?将所有图像切割成相同的分辨率? (就像 Instagram 的系统一样)。
【问题讨论】:
标签:
android
ios
memory
image-size
【解决方案1】:
如果您想以字节为单位减小图像大小,您至少可以处理 3 个方面:
- 减小图像尺寸(像素分辨率)。这几乎总是
会导致质量下降,但如果您的用户在小屏幕上观看
屏幕设备,你不要调整太多,损失不会
重大。您还可以使用插值来最小化视觉
调整大小时降级。
- 降低位深度(颜色分辨率)。如果图像是全彩色(32
或每像素 24 位),您有时可以减少它
到较低的颜色计数,例如使其成为 8 位。这将再次
导致质量损失,但您可以使用抖动来减少它。
- 使用更好的压缩。大多数图像是
这些天已经压缩了,但在某些情况下你可以重新压缩
使文件变小的图像。一个例子是JPEG,它
支持不同的质量因子。也有不同的
JPEG 中的子类型(颜色采样频率)。所以如果你保存一个
图像为 4:1:1 而不是 4:4:4,它将包含更少的颜色内容
并在字节大小上变小,但差异通常不是
肉眼可见。这个post 有关于改变的细节
iOS 上的 JPEG 质量因子。