将图像大小调整为指定大小 (<100 kB)

Posted

技术标签:

【中文标题】将图像大小调整为指定大小 (<100 kB)【英文标题】:Resize image to specified size (<100 kB) 【发布时间】:2013-10-08 17:15:05 【问题描述】:

我需要将上传的图片大小调整为最大 100 kB。有可能吗?

例如:尺寸为 1200x600 的 image1.jpg 有 280kB,我需要将其调整为

【问题讨论】:

【参考方案1】:

ImageMagick 的最新版本允许您像这样指定 JPEG 文件的最大大小:

convert input.jpg -define jpeg:extent=100kb output.jpg

尽最大努力使输出文件小于 100kB。

【讨论】:

【参考方案2】:

试试这个

convert DSC_0124.JPG -resize 602x400! -strip -define jpeg:extent=100KB img1.jpg

【讨论】:

它对我有用。我使用了 -auto-orient,而不是将其调整为特定大小,而是将其调整为原始大小的 15%(-resize 15%)以保持纵横比。见:imagemagick.org/Usage/resize【参考方案3】:

简短回答:不。

长答案:有可能,但它可能比它的价值更麻烦。

JPEG 的物理尺寸和文件大小之间没有固定的关系,因为用于压缩图像的算法不仅考虑了图像的内容,还考虑了决定“有损”程度的“质量”因素压缩过程将。它可以让您节省磁盘空间,但您的图像看起来更糟。

最好的方法是使用试错法来找到一个图像大小 [维度],让您以良好的质量因子到达 100kB 的邻域,然后在脚本中调整为该大小,检查图像的文件大小是否仍然太大,并在必要时开始降低质量。

【讨论】:

但是如果我得到实际大小并按百分比调整图像大小,我会损失很多质量? 当您缩小图像时,您肯定会丢失细节,这可能被视为质量损失。当您使用 JPEG 文件格式时,基于 JPEG 算法的“质量/压缩系数”exemplified here,图像质量会有额外损失。这是图像质量和文件大小之间的平衡。 如果你的服务器很强大,imagemagick 很快,所以如果原始文件大小只有 500K 左右,可以进行快速循环检查 imagemagick 的输出文件大小。基本上设置您希望质量下降多少,运行命令并继续检查文件大小,直到达到您想要的大小。确保每次都在原始文件上运行调整大小,否则您将遭受复合有损编码的愤怒【参考方案4】:

你需要使用 gd/imagemagick

例如 http://phpthumb.gxdlabs.com/

【讨论】:

【参考方案5】:

看看this

它应该是您正在寻找的解决方案。

【讨论】:

【参考方案6】:

如果您使用的是基于 linux 的服务器,我建议您使用 imagemagick,它有一个很好的 CLI,可以轻松地与网络语言交互。

有几种方法可以解决这个问题,具体取决于分辨率或质量对您来说是否更重要。

根据图像的复杂性,对于 1200x600 图像,您正在寻找大约 500K 到 3K 之间的文件大小

类似的命令

"imagemagick inputfile.jpg -quality 80 -resize 1200x600" 

可能适用于大多数情况,但您可以更精细地检查文件大小和内容,并为您的质量提供动态值。

【讨论】:

以上是关于将图像大小调整为指定大小 (<100 kB)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PIL 减小图像文件大小

如何将大小调整为适当的 img 标签?

Asp.net 图像大小调整质量

如何调整图片kb大小

如何将jpeg大小减小到“所需大小”?

调整图像大小以使大小与指定的纵横比匹配[重复]