-
大小: 4KB文件類型: .c金幣: 1下載: 0 次發布日期: 2021-06-24
- 語言: 其他
- 標簽: linux??framebuffer??terminal??C語言??
資源簡介
在terminal里寫framebuffer顯示一張32位/24位/16位jpg圖片
代碼片段和文件信息
/*
?*?===========================================================================
?*
?*???????Filename:??test.c
?*
?*????Description:??
?*
?*????????Version:??1.0
?*????????Created:??03/26/2012?01:55:10?PM
?*???????Revision:??none
?*???????Compiler:??gcc
?*
?*?????????Author:??Johann?(smith)?hcywcx@gmail.com
?*????????Company:??
?*
?*?===========================================================================
?*/
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#define?FB_DEV?“/dev/fb0“
void?RGB888toRGB32(unsigned?int?width?unsigned?char?*inbuffer?unsigned?char?*?outbuffer);
unsigned?short??RGB888toRGB565(unsigned?char?redunsigned?char?green?unsigned?char?blue);
int?fb_pixel(void?*fbmem?int?width?int?height?int?x?int?y?unsigned?short?color);
void?RGB888toRGB32(unsigned?int?width?unsigned?char?*inbuffer?unsigned?char?*outbuffer)
{
?????unsigned?int?i;
?
?????for?(i=0;?i??width;?i++)
?????{
?/*?RED?*/
?????????outbuffer[(i<<2)+0]?=?inbuffer[i?*?3?+?2];
?/*?GREEN?*/
?????????outbuffer[(i<<2)+1]?=?inbuffer[i?*?3?+?1];
?/*?BLUE?*/
?????????outbuffer[(i<<2)+2]?=?inbuffer[i?*?3];
?????????/*?ALPHA?*/
?????????outbuffer[(i<<2)+3]?=?‘\0‘;
?????}
}
unsigned?short?RGB888toRGB565(unsigned?char?red?unsigned?char?green?unsigned?char?blue)
{
unsigned?short??B?=?(blue?>>?3)?&?0x001F;
unsigned?short??G?=?((green?>>?2)?<5)?&?0x07E0;
unsigned?short??R?=?((red?>>?3)?<11)?&?0xF800;
return?(unsigned?short)?(R?|?G?|?B);
}
int?fb_pixel(void?*fbmem?int?width?int?height?int?x?int?y?unsigned?short?color)
{
if?((x?>?width)?||?(y?>?height))?return?(-1);
unsigned?short?*dst?=?((unsigned?short?*)?fbmem?+?y?*?width?+?x);
*dst?=?color;
return?(0);
}
int?main(int?argc?char?*argv[])
{
FILE?*jpgfile;
int?fbdev;
char?*fb_device;
unsigned?char?*fbmem;
unsigned?short?color;
unsigned?char?*buffer?*outbuffer;
unsigned?int?s
評論
共有 條評論