image-processing - 如何将任何图像缩小到 <300 字节

标签 image-processing

我想拍摄一张不同尺寸的图片 (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:

dither=None dither=Riemersma dither=FloydSteinberg

和原文:

original

关于image-processing - 如何将任何图像缩小到 <300 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19966376/

相关文章:

python - 使用python读取和显示原始图像

algorithm - 如何在24 bpp显示器上最好地显示30+ bpp图形?

algorithm - 简单的直线检测算法

Javascript 截取 Flash 对象的屏幕截图

python - Python中的环中值过滤器

android - Android中的OpenCV图像比较和相似性

python - 平面图边缘检测 - 图像处理?

python-3.x - LAB 色彩空间中的色彩校正矩阵 - OpenCV

iOS如何屏蔽图片背景色

c# - 用于简单实时圆检测的霍夫变换替代方案