Example #1
0
void JPEG_encode(void)//编码主函数
{

	u8 res;
	u16 i,j,color;

	res=f_mount(0, &fatfs);
	while(res)LCD_String(20,20,"SD mount failed!",RED);
	res=f_open(&fileW,"0:/DCMI/ph1.jpg",FA_WRITE|FA_CREATE_ALWAYS);//创建并打开
	while(res)LCD_String(20,20,"file create failed!",RED);

	cinfo=jpeg_create_compress();//创建JPEG压缩文件
	cinfo->image_width=240;
  	cinfo->image_height=320;
  	cinfo->output=0;//数据输出到NULL;
  	jpeg_set_default(cinfo);//设置默认参数
	jpeg_start_compress(cinfo);//开始压缩,写压缩文件头信息
	j=0;
	while(cinfo->next_line<cinfo->image_height)
	{
		for(i=0;i<240;i++)//读取一行
		{
			LCD_Cursor(i,cinfo->next_line);			
			if((lcdid&0xff00)==0x9300)color=BGR565toRGB565(LCD_ReadRAM());
			else color=LCD_ReadRAM();
			cinfo->inbuf[j++]=(u8)((color&0xf800)>>8);
			cinfo->inbuf[j++]=(u8)((color&0x07e0)>>3);
			cinfo->inbuf[j++]=(u8)((color&0x001f)<<3);
		}
		cinfo->next_line++; 
	  	//当数据填满时压缩并输出数据(填满16行)
	  	if(cinfo->next_line%cinfo->inbuf_height==0)
		{
			j=0;
	    	jint_process_rows(cinfo);//在这里压缩
	    	memset((void*)(cinfo->inbuf),0,cinfo->inbuf_size);//清空输入缓冲区
	  	}
	}	
	jpeg_finish_compress(cinfo);
	f_close(&fileW);
	LEDOn(LED4);
	while(1);
}
Example #2
0
//LCD读点
u16 LCD_GetPoint(u16 x,u16 y)
{
	LCD_SetCursor(x,y);
	return BGR565toRGB565(LCD_ReadRAM());
}