Esempio n. 1
0
int left_sector (char *frameBuffer,int width, int height,int truex ,u32_t *buf32)
{
  int i, j, m1, m2, m3, m4, m5, m6, m7;

  m1 = width / 8;
  m2 = width / 4;
  m3 = width / 4 + width / 8;
  m4 = width / 2;
  m5 = width / 2 + width / 8;
  m6 = width / 2 + width / 4;
  m7 = width / 2 + width / 8 + width / 4 ;
  for (i = 0; i <= width / 8; i++, m1++, m2++, m3++, m4++, m5++, m6++, m7++)
	{
      for (j = 0; j <= height; j++)
    {
	  drawRect_rgbtest(i, width, j ,  truex, buf32[i + j  * width], frameBuffer);
	  drawRect_rgbtest(m1, width, j,    truex, buf32[m1 + j * width], frameBuffer);
	  drawRect_rgbtest(m2, width, j,    truex, buf32[m2+ j * width], frameBuffer);
	  drawRect_rgbtest(m3, width, j,    truex, buf32[m3+ j * width], frameBuffer);
	  drawRect_rgbtest(m4, width, j,    truex, buf32[m4+ j * width], frameBuffer);
	  drawRect_rgbtest(m5, width, j,    truex, buf32[m5 + j * width], frameBuffer);
	  drawRect_rgbtest(m6, width, j,    truex, buf32[m6 + j * width], frameBuffer);
	  drawRect_rgbtest(m7, width, j,    truex, buf32[m7 + j * width], frameBuffer);
	}
      usleep (10000);
    }

  return 0;
}
int down_sector (char *frameBuffer,int width, int height, u32_t *buf32)
{
  int i, j, m1, m2, m3, m4, m5, m6, m7;

  m1 = height / 8;
  m2 = height / 4;
  m3 = height / 4 + height / 8;
  m4 = height / 2;
  m5 = height / 2 + height / 8;
  m6 = height / 2 + height / 4;
  m7 = height / 2 + height / 8 + height / 4 - 1;

  for (j = 0; j <= height / 8; j++, m1++, m2++, m3++, m4++, m5++, m6++, m7++)
    {
      for (i = 0; i <= width; i++)
	{
	  drawRect_rgbtest(i, width, j ,   buf32[i + j  * width], frameBuffer);
	  drawRect_rgbtest(i, width, m1,   buf32[i + m1 * width], frameBuffer);
	  drawRect_rgbtest(i, width, m2,   buf32[i + m2 * width], frameBuffer);
	  drawRect_rgbtest(i, width, m3,   buf32[i + m3 * width], frameBuffer);
	  drawRect_rgbtest(i, width, m4,   buf32[i + m4 * width], frameBuffer);
	  drawRect_rgbtest(i, width, m5,   buf32[i + m5 * width], frameBuffer);
	  drawRect_rgbtest(i, width, m6,   buf32[i + m6 * width], frameBuffer);
	  drawRect_rgbtest(i, width, m7,   buf32[i + m7 * width], frameBuffer);
	}
      usleep (10000);
    }

  return 0;
}
Esempio n. 3
0
int down(char *frameBuffer, int width, int height,int truex, u32_t * buf32)
{
  int i = 0;
  int j = 0;

  for (j = 0; j < height; j++)
    {
      for (i = 0; i < width; i++)
	{
	  drawRect_rgbtest (i, width, j,truex, buf32[j * width + i], frameBuffer);
	}
      usleep (1500);
    }
}
Esempio n. 4
0
int main(int argc, char **argv)
{
	unsigned int width = 0, height = 0, size = 0;
	float rate = 0.0;
	int ret = get_JPEG_info(argv[1], &width, &height, &size, &rate);
	//得到图片的大小长度宽度等属性
	if (ret == 0)
		printf("widhth*height = %u * %u; size=%u; rate=%.2f\n", width, height, size, rate);
	
	unsigned char *bffer;
	bffer = read_JPEG_file(argv[1]);
//	u32_t buf32 = read_JPEG_file(argv[1]);

	frameBuffer = open_fb_ioctl(argv[2],&vinfo,&finfo);
	//打开/dev/fbx,并得到fb的属性vinfo,finfo,然后mmap到内存,返回内存的首地址
	printf("x = %d y = %d\n",vinfo.xres,vinfo.yres);
	if(width != vinfo.xres || height != vinfo.yres)
	{
		printf("photo is worrg\n");
		return 2;
	}
	printf("photo is ok\n");	
	
	fb_info jpeg_inf;
	jpeg_inf.w = width;
	jpeg_inf.h = height;	
	u32_t *buf32;
	u16_t *buf16;
	printf("%d\n",vinfo.bits_per_pixel);
	switch(vinfo.bits_per_pixel){
	case 32:
		buf32 = rgb24to32((u8_t *)bffer,jpeg_inf);
		printf("24 to 32\n");
		break;
	case 24:
	//	u24_t *buf = (u24_t *)buffer;
		printf("24 to 24\n");
		break;
	case 16:
	//	u16_t *buf = rgb24to16((u8_t *)buffer,jpeg_inf);
		printf("24 to 16\n");
		break;
	default:
		printf("worrg /dev/fb.bits_per_pixel\n");
		return 1;
	}

	// 随机产生特效
	srand((unsigned)time(NULL));
	switch(rand()%3)
	{
		case 0:
			down_sector(frameBuffer, width, height, buf32);
			break;
		case 1:
			left(frameBuffer, width, height, buf32);
			break;			
		case 2: 
			down(frameBuffer, width, height, buf32);
			break;
	}
	
#if 0
	//根据不同的显卡色位转换图片色位
	int i = 0;
	int j = 0;
	for(j = 0;j < height;j ++)
	{
		for(i = 0; i < width; i++)
		{
			drawRect_rgbtest(i,width,j,buf32[j*width+i],frameBuffer);	
		}
			usleep(5000);
	}
	//循环打印到屏幕
//	int k = 0;
//	int i;
//	int j;
//	for(i = 0; i < width; i = i + 256)	
//	{
//		for(j = 0;j <  height;j++)
//		{
//			for(k = i; k < i + 256; k++)
//			{
//				drawRect_rgbtest(k,width,j,height,buf32[j*width+k],frameBuffer);	
//			}
//		}	
//		usleep(100000);
//	}

	sleep(10);
#endif
return 0;
}