我用自己的原始输入图像对其进行了测试,它运行良好。
您可能使用了错误版本的 ImageMagick。
我从https://imagemagick.org/script/download.php 下载了版本:ImageMagick-7.0.8-49-Q8-x64-static.exe。
在我下载的版本中,转换命令是magick.exe而不是convert。
以下命令正在运行:
magick.exe -size 768x576 -depth 8 rgb:my_image.raw my_image.jpeg。
我更喜欢使用FFmpeg 进行格式转换。
您可以从https://ffmpeg.zeranoe.com/builds/下载它
选择:
版本:稳定(当前版本为 4.1.3)。
架构:Windows 64 位
链接:静态。
解压zip文件,你只需要ffmpeg.exe。
要使用FFmpeg 将raw 文件转换为jpeg,您可以使用以下命令:
ffmpeg -y -video_size 768x576 -pix_fmt rgb24 -i my_image.raw -pix_fmt yuvj444p my_image.jpeg
假设您的原始文件格式是“大块”RGB(顺序:r,g,b,r,g,b,r,g,b...),请确保文件大小为 768*576*3 = 1,327,104 字节.
只是为了确保问题不在您的输入文件中......
您可以使用FFmpeg 创建合成输入raw 图像并将结果转换为jpeg:
创建合成输入:
ffmpeg -y -f lavfi -i testsrc=duration=1:size=768x576:rate=1 -pix_fmt rgb24 -f image2 test_image.raw
转换合成输入:
ffmpeg -y -video_size 768x576 -pix_fmt rgb24 -i test_image.raw -pix_fmt yuvj444p test_image.jpeg
结果(test_image.jpeg):
我找到了解决办法:
显然原始图像格式是“平面”RGB:
RRRRR
RRRRR
RRRRR
GGGGG
GGGGG
GGGGG
BBBBB
BBBBB
BBBBB
将其转换为 jpeg(使用FFmpeg)是一个复杂的问题:
ffmpeg -y -video_size 768x576 -pix_fmt gbrp -i m-001-1.raw -filter_complex "extractplanes=g+b+r[g][b][r],[r][g][b]mergeplanes=0x001020:gbrp[v]" -map "[v]" m-001-1.jpeg
FFmpeg 不支持原始“平面”RGB 格式。
唯一接近 RGB 的“平面”是 GBR(首先是绿色平面)。
我使用extractplanes 和mergeplanes 重新排序颜色通道。
ImageMagick 有一个更简单的解决方案:
magick.exe -depth 8 -interlace plane -size 768x576 rgb:image.raw image.jpeg
示例:
由于stackoverflow不允许上传raw文件,我上传了png格式的grayscale模拟“平面”RGB的图像:
要测试解决方案,请使用以下步骤:
- 下载image(imgur 命名为:
D5IUp.png)。
- 从
png 转换为raw 为“平面”RGB(.y 扩展):
ffmpeg -y -i D5IUp.png -c:v rawvideo -pix_fmt gray D5IUp.y
- 从
raw 转换为jpeg:
ffmpeg -y -video_size 128x96 -pix_fmt gbrp -i D5IUp.y -filter_complex "extractplanes=g+b+r[g][b][r],[r][g][b]mergeplanes=0x001020:gbrp[v]" -map "[v]" D5IUp.jpeg
结果:
使用ImageMagick进行批量转换的示例:
for %%f in (*.raw) do (magick.exe -depth 8 -interlace plane -size 768x576 rgb:"%%f" "%%~nf.jpeg")