将图像转换为BMP RGB565而不使用BMP标头

问题描述 投票:1回答:1

我正在使用Raspberry Pi 3B +和Imagemagick 6.9.7-4 Q16手臂20170114将文件转换为RGB565并将其显示在480x320屏幕上(图像像素尺寸也是480x320),方法是将其写入帧缓冲区。我正在使用以下转换命令:

转换dmi.jpg + flip -strip -define bmp:subtype = RGB565 bmp2:out.bmp

预期的文件大小为307,200字节。由于标题数据,实际的文件大小略高。目前我正在使用dd从文件的开头删除X个字节以使文件307,200。

例如。如果filesize是307,338,我正在运行以下命令:

dd bs = 138 skip = 1 if = out.bmp = out.trimmed.bmp

一旦文件被修剪并且文件大小为307,200,我就可以将文件写入帧缓冲区

cat out.trimmed.bmp> / dev / fb1

有没有人对如何更新convert命令以简单地省略标题数据有任何见解?我想删除中间步骤,只需使用Imagemagick直接写入帧缓冲区。

转换dmi.jpg + flip -strip -define bmp:subtype = RGB565 bmp2:/ dev / fb1

我尝试了以下命令,但它们都创建了一个比我所需的文件大小307,200大得多的文件。

convert dmi.jpg + flip -strip -define bmp:subtype = RGB565 rgb:0-rgb.bmp

convert dmi.jpg + flip -strip -define bmp:subtype = RGB565 rgba:0-rgba.bmp

转换dmi.jpg + flip -strip -define bmp:subtype = RGB565 dib:0-dib.bmp

我已经测试过fbi(fim)(framebuffer imageviewer)这样做,并且该程序并不适合我的需要。我也测试了ffmpeg进行转换,但它的资源很重且很慢。

谢谢!

imagemagick
1个回答
1
投票

像这样:

convert dmi.jpg +flip -strip -define bmp:subtype=RGB565 bmp2:- | dd bs=138 skip=1 > /dev/fb1

说明:

bmp2:-将使ImageMagick在stdout上写一个BMP2。默认情况下,dd将读取stdin并写入stdout,然后将其重定向到帧缓冲区。

© www.soinside.com 2019 - 2024. All rights reserved.