<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/201611/322270.htm

          {

          Write_data(tupian[i];)

          }

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

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

          先來(lái)看看我的例程,如下

          #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軸的起末

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

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

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

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



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

          評(píng)論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();