我想拍摄一张不同大小的图像(jpg/png)并将其转换为一个非常小的图像文件。我将定义非常小,低于 300 字节。
图像质量不是很重要(显然)。我正在考虑转换后的图像被极度像素化为〜4种颜色。
什么是最好的图像格式?
是否有 ImageMagick 转换命令来执行此操作?
我想拍摄一张不同大小的图像(jpg/png)并将其转换为一个非常小的图像文件。我将定义非常小,低于 300 字节。
图像质量不是很重要(显然)。我正在考虑转换后的图像被极度像素化为〜4种颜色。
什么是最好的图像格式?
是否有 ImageMagick 转换命令来执行此操作?
这是一个执行您想要的 ImageMagick 命令:
convert <in>.<extension> -sample 1x1 -strip <out>.<extension>
图像质量会受到一点影响,但正如你所说,这对你来说并不是很重要。
这是一个可能更有用的版本:
convert <in>.<extension> -dither FloydSteinberg -resize 32x32 -colors 4 -strip <out>.gif
有关更多变化,请参见下文。在测试中,GIF 的输出最小。
我在 1.7M 测试图像上的结果in.jpg
:
for type in jpg gif png; do convert -strip -sample 1x1 in.jpg out.$type; done
然后ls
给出:
-rw------- 1 collins collins 1.7M Nov 13 16:04 in.jpg
-rw------- 1 collins collins 286 Nov 13 16:07 out.jpg
-rw------- 1 collins collins 43 Nov 13 16:07 out.gif
-rw------- 1 collins collins 82 Nov 13 16:07 out.png
因此,看起来 GIF 和 PNG 是更好的选择,尽管 JPG 仍然可以让您低于 300 字节标记。
为了更好地近似〜4种颜色,您可以执行例如
for type in jpg gif png; do convert -strip -sample 2x2 in.jpg out.$type; done
虽然现在 JPG 太大了:
-rw------- 1 collins collins 1.7M Nov 13 16:04 in.jpg
-rw------- 1 collins collins 423 Nov 13 17:03 out.jpg
-rw------- 1 collins collins 50 Nov 13 17:03 out.gif
-rw------- 1 collins collins 93 Nov 13 17:03 out.png
还有另一种获得约 4 种颜色的方法,它允许我们增加输出图像的大小:
for type in jpg gif png; do
for dither in None Riemersma FloydSteinberg; do
convert in.jpg -dither $dither -resize 32x32 -colors 4 -strip out.$dither.$type;
done
done
现在 GIF 和一些 PNG 将其压缩到 300 字节以下:
-rw------- 1 collins collins 1.7M Nov 13 16:04 in.jpg
-rw------- 1 collins collins 1.9K Nov 13 17:30 out.None.jpg
-rw------- 1 collins collins 2.1K Nov 13 17:30 out.Riemersma.jpg
-rw------- 1 collins collins 2.1K Nov 13 17:30 out.FloydSteinberg.jpg
-rw------- 1 collins collins 225 Nov 13 17:30 out.None.gif
-rw------- 1 collins collins 229 Nov 13 17:30 out.Riemersma.gif
-rw------- 1 collins collins 234 Nov 13 17:30 out.FloydSteinberg.gif
-rw------- 1 collins collins 263 Nov 13 17:30 out.None.png
-rw------- 1 collins collins 332 Nov 13 17:30 out.Riemersma.png
-rw------- 1 collins collins 319 Nov 13 17:30 out.FloydSteinberg.png
例如,这里是三个输出 GIF:
和原件:
如果您只对图像使用几种确切的颜色,那么我建议使用 GIF,因为它仅将颜色索引存储在放置在文件中的调色板中,而不是完全 RGB。因此,您在 Photoshop 中创建了一个 4 色 GIF 图像,并且每个像素只有 2 位(或类似的)。
有关索引颜色和可以保留它们的图像格式的更多信息,请参阅索引颜色