将图像大小调整为指定大小 (<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)的主要内容,如果未能解决你的问题,请参考以下文章