【发布时间】:2013-08-12 01:59:23
【问题描述】:
我有一个大约 10mb 的用户动画 gif 文件。我想允许用户上传它并让我将它托管在我的服务器上,但我想重新调整它以适应最大 5mb 的文件大小,以节省盗链的带宽。
我现在有一个基本方法,可以根据像素表面积确定targetWidth 和targetHeight。
效果很好:
CGFloat aspectRatio = originalHeight / originalWidth;
CGFloat reductionFactor = desiredFileSize / originalFileSize;
CGFloat targetSurfaceArea = originalSurfaceArea * reductionFactor;
int targetHeight = targetSurfaceArea / sqrt(targetSurfaceArea/aspectRatio);
int targetWidth = targetSurfaceArea / targetHeight;
它相当准确,例如。结果:一个 27mb 的文件会变成 3.3mb,或者一个 13.9mb 的文件会变成 5.5mb。
我想将这个精度调整到更接近 5mb,我希望有人能更多地了解如何将 gif 颜色/帧数更好地考虑到这个算法中。谢谢
【问题讨论】:
-
您要调整图片大小吗?所以它也可能会减小文件大小>?
-
@iPatel 是的,我正在尝试通过调整图像大小来减小文件大小。我想解决 5mb = 宽度和高度
标签: objective-c image compression gif animated-gif