我想在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字节))))有趣的程序))
答案 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一起使用,因此可能不适用软件?