ImageMagick将BMP从24位转换为16位模式?

时间:2015-12-15 19:53:49

标签: image-processing imagemagick imagemagick-convert imagemagick-identify

我想在ImageMagick中将BMP从24位/像素转换为16位/像素模式。

convert /tmp/a/new/37.bmp -depth 5 -define bmp:format=bmp2 /tmp/a/new/37_v2_16bit.bmp
convert /tmp/a/new/37.bmp -depth 5 -define bmp:format=bmp3 /tmp/a/new/37_v3_16bit.bmp

根据以下输出结果,每个R.,每个G和每个B的结果具有相同的8位。     识别-verbose

我做错了什么?如何在BMP中获得16位颜色?

谢谢!

P上。 S上。

  

-depth value

     

图像的深度。这是像素中的位数。唯一可接受的值是8或16。   http://linux.math.tifr.res.in/manuals/html/convert.html

=(

官方文档说(没有提到限制):

  

-depth value

     

图像的深度。

     

这是像素内颜色样本中的位数。使用此选项指定深度未知的原始图像的深度,例如灰度,RGB或CMYK,或者在读取后更改任何图像的深度。

  

转换/tmp/a/new/37.bmp-colors 256 /tmp/a/new/37_256.bmp

使文件更小,但在视觉上它是相同的!问心无愧? )))))

  

转换/tmp/a/new/37.bmp-colors 65536 /tmp/a/new/37_64k.bmp

相同尺寸,相同的视觉图片。

  

转换/tmp/a/new/37.bmp -dither无 - 颜色256 /tmp/a/new/37_256_nd.bmp

再次小一点,但看起来不像256色!错误? 256色800x600 BMP是~800x600x1字节(无标题)~480 000字节。但它说〜650 000字节))))有趣的程序))

1 个答案:

答案 0 :(得分:0)

不是ImageMagick,而是ffmpeg,它与视频更相关,如果您指的是565格式,可以创建16位bmp图像吗?

ffmpeg -i ffmpeg-logo.png -sws_flags neighbor -sws_dither none -pix_fmt rgb565 -y ffmpeg-logo-16bit-nodither.bmp

这有意地禁用了抖动功能,但如果您希望忽略抖动部分,例如

ffmpeg -i ffmpeg-logo.png -pix_fmt rgb565 -y ffmpeg-logo-16bit-dithered.bmp

如果您的图像本质上是来自rgb565来源,则它不应抖动它们,但在进行任何批量转换之前,我将始终保持谨慎并仔细检查一些图像。

根据评论中的讨论,听起来PNG会是逐字保存旧屏幕截图的一种很好的格式,因为它使用了无损压缩,但由于与vintage一起使用,因此可能不适用软件?

相关问题