|
发表于 2018-5-26 19:17:02
|
显示全部楼层
你好,我看了你的 硬件解码 jpg 文件
貌似不能够显示,
/*
*********************************************************************************************************
* 函 数 名: DisPlayjpeg
* 功能说明: 显示jpeg格式图片
* 形 参: JPEGFileName 文件名
mode 0:指定位置显示 1:居中显示
x x起始坐标
y y起始坐标
member 缩放分子
denom 缩放分母
* 返 回 值: 无
*********************************************************************************************************
*/
int DisPlayjpeg(const TCHAR *JPEGFileName,u8 mode,u32 x,u32 y,int member,int denom)
{
float Xflag,Yflag;
FIL JPEGFile;
__IO int xpos,ypos;
f_open(&JPEGFile, JPEGFileName, FA_READ);
pic_buffer 这个内存申请 大小 为 1024*600*4
my_picjpeg(&JPEGFile, (uint8_t *)pic_buffer);
// 获取JPEG图片信息 这个地方可以获取到 jpg 的图片大小数据, 但是图片显示没有任何反应 ?????????????
xpos= JPEG_Info.ImageWidth; //获取JPEG图片的X轴大小
ypos= JPEG_Info.ImageHeight; //获取JPEG图片的Y轴大小
switch(mode)
{
case 0: //在指定位置显示图片
if((member == 1) && (denom == 1)) //无需缩放,直接绘制
{
GUI_JPEG_Draw(pic_buffer,JPEGFile.obj.objsize,x,y); //在指定位置显示JPEG图片
}
else //否则图片需要缩放
{
GUI_JPEG_DrawScaled(pic_buffer,JPEGFile.obj.objsize,x,y,member,denom);
}
break;
case 1: //在LCD中间显示图片
if(_picshowDev.width > JPEG_Info.ImageWidth)
xpos = (_picshowDev.width - JPEG_Info.ImageWidth)/2 - 1;
else
xpos = 0; //大于从起点显示
if(_picshowDev.height > JPEG_Info.ImageHeight)
ypos = (_picshowDev.height - JPEG_Info.ImageHeight)/2 - 1;
else
ypos = 0;
if((member == 1) && (denom == 1)) //无需缩放,直接绘制
{
//在LCD中间显示图片
GUI_JPEG_Draw(pic_buffer,JPEGFile.obj.objsize,xpos,ypos);
}
else //否则图片需要缩放
{
Xflag = (float)JPEG_Info.ImageWidth*((float)member/(float)denom);
Yflag = (float)JPEG_Info.ImageHeight*((float)member/(float)denom);
if(Xflag > _picshowDev.width)
xpos = 0;
else
xpos = (_picshowDev.width-(int)Xflag)/2+1;
if(Yflag > _picshowDev.height)
ypos = 0;
else
ypos = (_picshowDev.height-(int)Yflag)/2+1;
GUI_JPEG_DrawScaled(pic_buffer,JPEGFile.obj.objsize,xpos,ypos,member,denom);
}
break;
}
f_close(&JPEGFile); //关闭JPEGFile文件
return 0;
}
|
|