3

我想拍摄一张不同大小的图像(jpg/png)并将其转换为一个非常小的图像文件。我将定义非常小,低于 300 字节。

图像质量不是很重要(显然)。我正在考虑转换后的图像被极度像素化为〜4种颜色。

什么是最好的图像格式?

是否有 ImageMagick 转换命令来执行此操作?

4

2 回答 2

5

解决方案

这是一个执行您想要的 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:

抖动=无 抖动=里默斯玛 抖动=弗洛伊德斯坦伯格

和原件:

原来的

于 2013-11-14T00:08:47.373 回答
3

如果您只对图像使用几种确切的颜色,那么我建议使用 GIF,因为它仅将颜色索引存储在放置在文件中的调色板中,而不是完全 RGB。因此,您在 Photoshop 中创建了一个 4 色 GIF 图像,并且每个像素只有 2 位(或类似的)。
有关索引颜色和可以保留它们的图像格式的更多信息,请参阅索引颜色

于 2013-11-13T23:27:37.987 回答