| 
  用了原子哥JPG解码码源,显示部分: 
 
定义图片显示格式: 
unsigned short  JPG2BMP[256]={0}; 
GUI_BITMAP JPG={ 
  16, /* XSize */ 
  16, /* YSize */ 
  32, /* BytesPerLine */ 
  16, /* BitsPerPixel */ 
  (const unsigned char *)JPG2BMP,  /*指向位图数据*/ 
  NULL,  /* 指向调色板 */ 
  GUI_DRAW_BMP565 
}; 
 
 
 
//将解出的字按RGB形式存储 lpbmp (BGR),(BGR) ......入口Y[] U[] V[] 出口lpPtr    
void StoreBuffer()   //一次解出16*16个点 
{ 
 short i,j;        
 unsigned char R,G,B; 
 int y,u,v,rr,gg,bb; 
 unsigned int color,count; 
   count=0; 
 for(i=0;i<SampRate_Y_V*8;i++) 
 { 
  if((sizei+i)<ImgHeight)// sizei表示行 sizej 表示列  
  {                          
   for(j=0;j<SampRate_Y_H*8;j++) 
   { 
    if((sizej+j)<ImgWidth) 
    { 
     y=Y[i*8*SampRate_Y_H+j]; 
     u=U[(i/V_YtoU)*8*SampRate_Y_H+j/H_YtoU]; 
     v=V[(i/V_YtoV)*8*SampRate_Y_H+j/H_YtoV]; 
     rr=((y<<8)+18*u+367*v)>>8; 
     gg=((y<<8)-159*u-220*v)>>8; 
     bb=((y<<8)+411*u-29*v)>>8; 
     R=(unsigned char)rr; 
     G=(unsigned char)gg; 
     B=(unsigned char)bb; 
     if (rr&0xffffff00) if (rr>255) R=255; else if (rr<0) R=0; 
     if (gg&0xffffff00) if (gg>255) G=255; else if (gg<0) G=0; 
     if (bb&0xffffff00) if (bb>255) B=255; else if (bb<0) B=0;   
        color=R>>3; 
     color=color<<6; 
     color |=(G>>2); 
     color=color<<5; 
     color |=(B>>3); 
     //在这里送给LCD显示 
      JPG2BMP[count]=color; 
     //POINT_COLOR=color;  
     //LCD_L0_SetPixelIndex(sizej+j,sizei+i,color);//显示图片  
     count++;    
    } 
    else  break; 
   }    
       
  } 
  else break; 
 } 
GUI_DrawBitmap(&JPG, sizej, sizei); 
  
} 
   GUI下扫描平等方向与JPG解码时的数据增长方向都是左到右,再上到下的方向,按道理GUI_DrawBitmap()应该可以直接显示才对啊,但是仿真时可以通过,解码时JPG2BMP[256]数组里的数据也准确,但是液晶屏却什么反应都木有,,,,,,,,,,, 
可是显示存放在片内FLASH的图片使用GUI_DrawBitmap()又可以正常显示,小弟愚昧,还望大家赐教啊!!! 
 
 
 
 
  |