我使用自己的原始输入图像进行了测试,工作正常。
您可能正在使用错误版本的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/下载它
选择:
版本:stable(当前版本为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
假设您的原始文件格式为“chunky” 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
):
![test_image](https://istack.dev59.com/COv8T.webp)
我找到了解决方案:
显然,原始图像格式是“平面”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
文件,我上传了一个以灰度格式模拟“平面”RGB的png
图像:
![planar RGB](https://istack.dev59.com/D5IUp.webp)
为了测试解决方案,请按照以下步骤进行:
- 下载图像(imgur将其命名为:
D5IUp.png
)。
- 将
png
转换为以“平面”RGB格式的raw
(使用.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
结果:
![rgb](https://istack.dev59.com/XQqwN.webp)
ImageMagick
批量转换示例:
for %%f in (*.raw) do (magick.exe -depth 8 -interlace plane -size 768x576 rgb:"%%f" "%%~nf.jpeg")