野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 20694|回复: 13

LCD显示图片的问题

[复制链接]
发表于 2014-5-2 10:49:03 | 显示全部楼层 |阅读模式
QQ图片20140502104811.jpg
这个为什么会说图片过大呢,是分辨率的问题吗,有什么软件可以修改这些吗
回复

使用道具 举报

发表于 2014-5-2 10:51:20 | 显示全部楼层
这例程不是我写,所以我不清楚情况。

有可能是仅支持 BMP16格式的图像,也有可能是图像分辨率超过320的问题。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-2 11:09:44 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-2 10:51
这例程不是我写,所以我不清楚情况。

有可能是仅支持 BMP16格式的图像,也有可能是图像分辨率超过320的问 ...

我把代码给你看看
int i, j, k;
    int width, height, l_width;
                  
    BYTE red,green,blue;
    BITMAPFILEHEADER bitHead;
    BITMAPINFOHEADER bitInfoHead;
    WORD fileType;

    unsigned int read_num;
    unsigned char tmp_name[20];
   sprintf((char*)tmp_name,"0:%s",pic_name);
    f_mount(0, &bmpfs[0]);

        BMP_DEBUG_PRINTF("file mount ok \r\n");
   
    bmpres = f_open( &bmpfsrc , (char *)tmp_name, FA_OPEN_EXISTING | FA_READ);
    Set_direction(0);

    if(bmpres == FR_OK)
    {
        BMP_DEBUG_PRINTF("Open file success\r\n");
        
        //¶áè¡Î»í¼Îļtí·DÅÏ¢        
        f_read(&bmpfsrc,&fileType,sizeof(WORD),&read_num);     
        
        if(fileType != 0x4d42)
        {
            BMP_DEBUG_PRINTF("file is not .bmp file!\r\n");
            return;
        }
        else
        {
            BMP_DEBUG_PRINTF("Ok this is .bmp file\r\n");       
        }        
        
        f_read(&bmpfsrc,&bitHead,sizeof(tagBITMAPFILEHEADER),&read_num);   
        
        showBmpHead(&bitHead);
        BMP_DEBUG_PRINTF("\r\n");
        
        //¶áè¡Î»í¼DÅÏ¢í·DÅÏ¢
        f_read(&bmpfsrc,&bitInfoHead,sizeof(BITMAPINFOHEADER),&read_num);        
        showBmpInforHead(&bitInfoHead);
        BMP_DEBUG_PRINTF("\r\n");
    }   
    else
    {
        BMP_DEBUG_PRINTF("file open fail!\r\n");
        return;
    }   
   
    width = bitInfoHead.biWidth;
    height = bitInfoHead.biHeight;
   
    l_width = WIDTHBYTES(width* bitInfoHead.biBitCount);                //¼ÆËãλí¼μÄêμ¼ê¿í¶è2¢è·±£ËüÎa32μı¶êy            
   
    if(l_width>960)
    {
        BMP_DEBUG_PRINTF("\nSORRY, PIC IS TOO BIG (<=320)\n");
        return;
    }
   
    if(bitInfoHead.biBitCount>=24)
    {

        bmp_lcd(x,240-y-height,width, height);                                                                                                                                        //LCD2&#206;êy&#207;à1&#216;éè&#214;&#195;

        for(i=0;i<height+1; i++)
        {       
            
            for(j=0; j<l_width; j++)                                                                                                                 //&#189;&#171;ò&#187;DDêy&#190;Yè&#171;2&#191;&#182;áè&#235;
            {
               
                f_read(&bmpfsrc,pColorData+j,1,&read_num);
            }            
            
            for(j=0;j<width;j++)                                                                                                                                 //ò&#187;DDóDD§D&#197;&#207;¢
            {
                k = j*3;                                                                                                                                                                //ò&#187;DD&#214;DμúK&#184;&#246;&#207;&#241;&#203;&#216;μ&#196;&#198;eμ&#227;
                red = pColorData[k+2];
                green = pColorData[k+1];
                blue =         pColorData[k];
                LCD_WR_Data(RGB24TORGB16(red,green,blue));                //D′è&#235;LCD-GRAM
            }            
        }
        bmp_lcd_reset();                                                                                                                                                                                                         //lcdé¨&#195;è·&#189;&#207;ò&#184;′&#212;-                
    }   
    else
    {        
        BMP_DEBUG_PRINTF("SORRY, THIS PIC IS NOT A 24BITS REAL COLOR");
        return ;
    }
   
    f_close(&bmpfsrc);
回复 支持 反对

使用道具 举报

发表于 2014-5-2 11:11:19 | 显示全部楼层
颜色位数是32位,太大了,例程不支持
if(l_width>960)

最多仅支持 3*320 ,就是最大的BMP为24位,而你的是32位。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-2 11:11:41 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-2 10:51
这例程不是我写,所以我不清楚情况。

有可能是仅支持 BMP16格式的图像,也有可能是图像分辨率超过320的问 ...

函数开头的确说了是支持24位的,那32位的就没有救了吗
回复 支持 反对

使用道具 举报

发表于 2014-5-2 11:13:46 | 显示全部楼层
じ☆ve月心汐 发表于 2014-5-2 11:11
函数开头的确说了是支持24位的,那32位的就没有救了吗

自行修改代码来支持咯。32位是多了透明色,不过液晶本来就不支持透明的,而且液晶一般是RGB565格式
回复 支持 反对

使用道具 举报

发表于 2014-5-2 11:14:31 | 显示全部楼层
自己研究一下,加上这功能就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-2 11:32:58 | 显示全部楼层
山外メ雲ジ 发表于 2014-5-2 11:13
自行修改代码来支持咯。32位是多了透明色,不过液晶本来就不支持透明的,而且液晶一般是RGB565格式

那请问去哪里找24位的真彩色或者有什么软件可以转换么,我找了很多图片都是不支持的,我只是用软件转换了下格式,
回复 支持 反对

使用道具 举报

发表于 2014-5-2 11:34:03 | 显示全部楼层
じ☆ve月心汐 发表于 2014-5-2 11:32
那请问去哪里找24位的真彩色或者有什么软件可以转换么,我找了很多图片都是不支持的,我只是用软件转换了 ...

系统自带了图片编辑器就可以了,打开,另存为。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-2 11:41:06 | 显示全部楼层
微粒子 发表于 2014-5-2 11:34
系统自带了图片编辑器就可以了,打开,另存为。

那里只是可以把图片格式改变但是好像是不能改变24位色的
回复 支持 反对

使用道具 举报

发表于 2014-5-2 11:47:11 | 显示全部楼层
じ☆ve月心汐 发表于 2014-5-2 11:41
那里只是可以把图片格式改变但是好像是不能改变24位色的

使用PS可以把图片存储为任何格式
回复 支持 反对

使用道具 举报

发表于 2014-5-2 11:48:00 | 显示全部楼层
じ☆ve月心汐 发表于 2014-5-2 11:41
那里只是可以把图片格式改变但是好像是不能改变24位色的

可以的,你保存为BMP 24位格式就是了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-5-2 12:05:36 | 显示全部楼层
微粒子 发表于 2014-5-2 11:34
系统自带了图片编辑器就可以了,打开,另存为。

我用ADC软件将他改为了24位色就解决了。只是要想显示32位的真的就不能了吗?
回复 支持 反对

使用道具 举报

发表于 2014-5-2 12:06:24 | 显示全部楼层
じ☆ve月心汐 发表于 2014-5-2 12:05
我用ADC软件将他改为了24位色就解决了。只是要想显示32位的真的就不能了吗?

肯定可以啊,需要自行修改代码而已。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 01:42 , Processed in 0.033427 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表