新聞中心

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

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

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

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

        本文引用地址:http://www.104case.com/article/201611/322270.htm

        {

        Write_data(tupian[i];)

        }

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

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

        先來看看我的例程,如下

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

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

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

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

        將寬高設置為屏幕的大小像素,點convert,ok!大功告成!



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

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 大埔区| 昌江| 鹿泉市| 岑溪市| 大埔区| 乌鲁木齐县| 绍兴市| 葫芦岛市| 炉霍县| 顺平县| 高要市| 金塔县| 葵青区| 波密县| 昭通市| 禄丰县| 泾阳县| 陇南市| 黄大仙区| 旬阳县| 巴东县| 新干县| 化德县| 南江县| 张家港市| 洮南市| 沭阳县| 宜川县| 当涂县| 礼泉县| 保德县| 西乌| 鹤峰县| 永昌县| 福州市| 平和县| 江津市| 柯坪县| 鹤岗市| 青田县| 南昌县|