我想拍摄不同大小的图像(jpg/png)并将其转换为非常小的图像文件.我将非常小的定义为300字节以下.
图像质量不是很重要(显然).我想将转换后的图像极其像素化为~4种颜色.
这个最好的图像格式是什么?
是否有ImageMagick转换命令来执行此操作?
这是一个ImageMagick命令,可以执行您想要的操作:
convert <in>.<extension> -sample 1x1 -strip <out>.<extension>
Run Code Online (Sandbox Code Playgroud)
图像质量有点受损,但正如你所说,这对你来说并不重要.
这是一个可能更有用的版本:
convert <in>.<extension> -dither FloydSteinberg -resize 32x32 -colors 4 -strip <out>.gif
Run Code Online (Sandbox Code Playgroud)
请参阅下面的更多变化.在测试中,GIF给出了最小的输出.
我在1.7M测试图像上的结果in.jpg:
for type in jpg gif png; do convert -strip -sample 1x1 in.jpg out.$type; done
Run Code Online (Sandbox Code Playgroud)
然后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
Run Code Online (Sandbox Code Playgroud)
所以,看起来像GIF和PNG是更好的选择,虽然JPG仍然让你低于300字节标记.
为了更好地逼近~4种颜色,你可以做到例如
for type in jpg gif png; do convert -strip -sample 2x2 in.jpg out.$type; done
Run Code Online (Sandbox Code Playgroud)
虽然现在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
Run Code Online (Sandbox Code Playgroud)
另一种获得~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
Run Code Online (Sandbox Code Playgroud)
现在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
Run Code Online (Sandbox Code Playgroud)
例如,以下是三个输出GIF:

原来的:
