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

ImageMagick Convert BMP from 24 bit to 16 bit Mode?

我正在尝试在 ImageMagick 中将 BMP 从 24 bits/pixel 模式转换为 16 bit/pixel 模式。

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 位: 识别-详细

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

谢谢!

P。 S.

-depth value

depth of the image. This is the number of bits in a pixel. The only acceptable values are 8 or 16. http://linux.math.tifr.res.in/manuals/html/convert.html

=(

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

-depth value

depth of the image.

This the number of bits in a color sample within a pixel. Use this option to specify the depth of raw images whose depth is unknown such as GRAY, RGB, or CMYK, or to change the depth of any image after it has been read.


convert /tmp/a/new/37.bmp -colors 256 /tmp/a/new/37_256.bmp

使文件变小,但视觉上是一样的!什么?! )))))


convert /tmp/a/new/37.bmp -colors 65536 /tmp/a/new/37_64k.bmp

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


convert /tmp/a/new/37.bmp -dither None -colors 256 /tmp/a/new/37_256_nd.bmp

又变小了一点,但不像256色!漏洞? 256 色 800x600 BMP 是 ~ 800x600x1 字节(没有 headers)~ 480 000 字节。但它说~650 000字节))))有趣的程序))

你从 linux.math... “-depth 16”选项并不意味着 16 位像素(如 R5G6R5 或 R5G5R5A1); -depth 16 表示 48-bit/pixel R16、G16、B16 或 64-bit/pixel R16、G16、B16、A16 像素。您引用的 "Official documentation" (2015) 是正确的。

ImageMagick 不支持那种 16 bit/pixel 格式,因此您需要将它们存储为 8 bit/channel 格式并使用更大的文件大小。

对于具有 256 种或更少颜色的图像,它似乎还会写入具有 1、4 或 8 位索引的颜色映射图像。您无需提出任何特殊要求,它会自动执行。对未压缩的 BMP 使用“-compress none”。当前的 ImageMagick(版本 6.9.2-8)为我提供了预期的 480kbyte 文件,如果我从一个超过 256 种颜色的 800x600 图像开始并使用

convert im.bmp -colors 256 -compress none out.bmp

ImageMagick 在读取时确实支持 16 位 "bitfields" BMP 格式,但我没有看到任何迹象表明它可以写入它们,也没有尝试读取或写入此类图像。

不是ImageMagick而是ffmpeg,跟视频比较相关,如果你指的是565格式,可以创建16bit的bmp图片吗?

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

那是有意禁用抖动,但如果你想这样做,只需省略 sws 部分,例如

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

如果您的图像本质上来自 rgb565 来源,那么它不应该对它们进行抖动,但在进行任何批量转换之前,我总是会谨慎并仔细检查一些图像。

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