• 大小: 14KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-13
  • 语言: 其他
  • 标签: JPEG解码  

资源简介

基于c的小尺寸JPEG解码,程序源程序是日本的一个开源网站

资源截图

代码片段和文件信息

#include “stm32f10x.h“
#include “jpegdecode.h“ 
#include “TFT.h“
#include “Systic.h“
#include 
#include “integer.h“
// 以下3句宏定义在tjpgd.h中修改

static int MaskL = 0; 
static int MaskR = DISP_XS - 1; 
static int MaskT = 0; 
static int MaskB = DISP_YS - 1; 

extern BYTE whflag;

/*
u16 Covert_RGB565_to_BGR565(unsigned short inRGB) 

    u16    outBGR = 0; 
     
    u16 rgb; 
    b = (inRGB    ) & 0x1F; 
    g = (inRGB>> 5) & 0x3F; 
    r = (inRGB>>11) & 0x1F; 
    outBGR = (b << 11) | (g << 5) | r; 


    return outBGR; 

*/

 
// 在屏幕上显示图片 
// 屏幕的起始地址在LCD_UPbase中保存 
void STM32_disp_blt ( 
                            int left        /* Left end (-32768 to 32767) */ 
                            int right        /* Right end (-32768 to 32767 >=left) */ 
                            int top        /* Top end (-32768 to 32767) */ 
                            int bottom        /* Bottom end (-32768 to 32767 >=right) */ 
                            const uint16_t *pat    /* Pattern data */ 
                        ) 

    int yc xc;    
    u32 i;
u32 len=0; 
int left2=0right2=7top2=0bottom2=7;

    if (left > right || top > bottom)  
    { 
        return;             // Check varidity 
    } 
    if (left > MaskR || right < MaskL  || top > MaskB || bottom < MaskT)  
    { 
        return;                // Check if in active area  
    }     
    yc = bottom - top  + 1;    // Vertical size  
    xc = right  - left + 1;  
    if (top < MaskT)         // Clip top of source image if it is out of active area  
    { 
        pat+= xc * (MaskT - top); 
        yc -= MaskT - top; 
        top = MaskT; 
    } 
    if (bottom > MaskB)     // Clip bottom of source image if it is out of active area  
    { 
        yc -= bottom - MaskB; 
        bottom = MaskB; 
    } 
    if (left < MaskL)         // Clip left of source image if it is out of active area  
    { 
        pat += MaskL - left; 
        xc -= MaskL - left;  
        left = MaskL; 
    } 
    if (right > MaskR)         // Clip right of source image it is out of active area 
    { 
        xc -= right - MaskR; 
        right = MaskR; 
    } 

    // 已经计算出了要绘制的x方向pixels和y方向pixels 
    // 上下左右的值已经校正为,为屏幕上的绝对位置,由此可以算出屏幕缓冲区的起始位置 
     
if(whflag==1)
{
// top2=320-bottom-1;
// bottom2=320-top-1;
// if(left2 != left)
// {
// top2+=(left-left2);
// bottom2+=(left-left2);
// left=left2;
// right=right2;
// }

// LCD_Set_Window(lefttop2rightbottom2);
// LCD_Scan_Dir(D2U_L2R);//从下到上从左到右
// LCD_SetCursor(left320-bottom);//设置光标位置
        //果然解码的顺序是从上到下,从左至右的
//显示顺序用从下到上就不对了!
LCD_Set_Window(lefttoprightbottom);
LCD_Scan_Dir(U2D_L2R);//从上到下从左到右
LCD_SetCursor(lefttop);//设置光标位置
// left2=left;
// right2=right;
}
else
{
LCD_Set_Window(lefttoprightbottom);
LCD_Scan_Dir(L2R_U2D);//从左到右从上到下
LCD_SetCursor(lefttop);//设置光标位置 
}
// LCD_WriteRAM

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        856  2010-04-24 23:45  integer.h

     文件       5231  2012-03-21 21:37  jpegdecode.c

     文件        241  2012-03-14 16:15  jpegdecode.h

     文件      36309  2012-03-21 21:30  tjpgd.c

     文件       3546  2012-03-14 11:29  tjpgd.h

----------- ---------  ---------- -----  ----

                46183                    5


评论

共有 条评论