Nag*_*dra 6 objective-c uiimageview uiimage nsdata uiimagejpegrepresentation
我通过将图像转换为NSData并且其数据长度得到错误值来计算图像大小(以字节为单位).
NSData *data = UIImageJPEGRepresentation(image,0.5);
NSLog(@"image size in bytes %lu",(unsigned long)data.length);
Run Code Online (Sandbox Code Playgroud)
小智 1
实际上,这里的 UIImage.length 函数并没有返回错误的值,它只是从 UIImage 到 NSData 有损转换/恢复的结果。
在 UIImageJpegRepresentation 中将 compressionQuality 设置为可能的最低压缩值 1.0 将不会返回原始图像。尽管在此过程中图像元数据被剥离,但该函数可以并且通常会生成比原始对象更大的对象。请注意,文件大小的增加也不会提高压缩原始图像的质量。Jpeg 一开始就被高度压缩,这就是它们如此频繁使用的原因,该函数将其解压缩,然后重新压缩。有点像随着年龄的增长,你的身体被拉伸了,打了肉毒杆菌,看起来可能和原来差不多,但里面却没有以前那么好了。
您可以对较大的文件有条件地使用较低的压缩质量(接近 1.0),因为质量会很快下降。除此之外,根据图像的最终目的,唯一的其他选择是调整图像大小或调整其分辨率,也许除了调整压缩比之外。这一变化将成倍减少数据使用。网络和移动使用通常不需要像用于数字打印的图像那样的分辨率。
您可以编写一些代码来根据需要调整每个图像和 NSData 表示以适应其单独的数据约束。
| 归档时间: |
|
| 查看次数: |
1591 次 |
| 最近记录: |