新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 如何取得適合自己屏幕大小的圖片?

如何取得適合自己屏幕大小的圖片?

作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
如何取得適合自己屏幕大小的圖片,本人在搞TFT顯示圖片時(shí)浪費(fèi)了好多時(shí)間,現(xiàn)把經(jīng)驗(yàn)中總結(jié)下來的用法總結(jié)如下,供各位道上的學(xué)習(xí)TFT的參考。

在你所學(xué)的arm開發(fā)板中,我用的是fm3(富士通mb9b系列的),如果例程中顯示圖片是用for(i=0;i

本文引用地址:http://m.butianyuan.cn/article/201611/322270.htm

{

Write_data(tupian[i];)

}

我們都知道顏色是以雙字節(jié)來定義的,比如說0x0000表示black;

如果你的例程中并不是write_data(高,低);(我記得stm32系列就是這么寫的)。那么上邊的i就要求用0xxxxx這種雙字節(jié)的數(shù)組來表示。不用再改總線,還要將數(shù)組移位,本人認(rèn)為如果例程不是你寫的就別來回改了,沒必要,

先來看看我的例程,如下

#define black 0x0000

#define blue 0x001F

#define green 0x07E0

#define cyan 0x07FF

#define red 0xF800

#define yellow 0xFFE0

#define white 0xFFFF

#define LCD_WIDTH 240

#define LCD_HEIGHT 320

**************************************************************************

void DrawPicture(uint xs,uint xe,uint ys,uint ye)

{

unsigned long int i;

SetWindow(xs, xe, ys, ye);

SetWindow_xy(xs,ys);

write_command(0x0022);

for (i=0;i<(xe*ye);i++)

{

write_data(qq[i]);

// ili9320_Delay(50);

}

//Set_Cs;

}

void write_command(uint16_t cmd)

{

LCD_RS = 0;

*(LCD_BASE) = cmd;

}

//-------------------------LCD write data -------------------------

void write_data(uint16_t data)

{

LCD_RS = 1;

__no_operation();

__no_operation();

//*(LCD_BASE) =(uint8_t)data;

//*(LCD_BASE) =(uint8_t)data<<8;

*(LCD_BASE) =data;

}

int32_t main(void)

{

FM3_GPIO->PFR4 = 0x0000; // Poart4 for gpio

FM3_GPIO->PDOR4 = 0x003C; // P42-P45 output 1

FM3_GPIO->DDR4 = 0x003C; // P42-P45: LED1-LED4, output;

// P40,P41,P48:key2,key3,key4, input

FM3_GPIO->PFR7 = 0x0000; // Poart7 for gpio

FM3_GPIO->DDR7 = 0x0008; // P73, output;

FM3_GPIO->PFR6 = 0x0000; // Poart6 for gpio

FM3_GPIO->DDR6 = 0x0024; // P64:key1, input; P65 LCD back light, output

// P62, LCD RS select,output

init_extbus(); // 初始化外部總線

delay(10);

LCD_BKLIGHT = 1;

delay(5);

TM280_HX8347G_Initial_code(); //初始化LCD屏,清成白色

delay(10);

clr_lcd();

DrawPicture(0,239,0,319); //x軸的起、末:Y軸的起末

像以上按著我的例程來說,在屏幕上顯示圖片時(shí)問題就出現(xiàn)了,如果直接用image2lcd很遺憾的告訴您,它生成的圖片數(shù)組是單字節(jié)的(0xxx),讓它顯示在屏幕上根本就不行,如果手上有圖片,可是你發(fā)現(xiàn)當(dāng)你用bmp2rgb軟件來轉(zhuǎn)換時(shí)發(fā)現(xiàn)轉(zhuǎn)換完后,數(shù)組里竟是空的,你開始懷疑軟件真爛?試一次還是這樣,換臺(tái)電腦結(jié)果還是一樣。如果你特意找一張24位的bitmap(bmp)圖片,你再用bmp2rgb來轉(zhuǎn)換發(fā)現(xiàn)成功了,并且都是雙字節(jié)數(shù)組,然后開始研究為什么?

其實(shí),在我目前看來,bmp2rgb軟件只能轉(zhuǎn)換24位的bmp格式的數(shù)組并且是單字節(jié),如果我們需要雙字節(jié)的,但手上僅有一個(gè)16位圖的圖片(用bmp2rg打開一開便知。)好了,如果此兩款軟件你同時(shí)擁有,先將此16位的圖片用image2lcd打開如圖

再轉(zhuǎn)換成24位的bmp格式圖,再將生成的圖片用bmp2rgb軟件打開

將寬高設(shè)置為屏幕的大小像素,點(diǎn)convert,ok!大功告成!



關(guān)鍵詞: arm開發(fā)板TF

評(píng)論


技術(shù)專區(qū)

關(guān)閉