图像特效之连环画

图像特效之连环画

关键代码:

int Comic(IMAGE_TYPE *BMP24_img)
 {
	DWORD width,height,i,j,bfsize;
	WORD  biBitCount;
	T_U8 *dst,*bmp,*img_data;
	int pix,R,G,B,gray;
	T_U32 line_byte,Imgindex;
	
	
	BITMAPFILEHEADER bf;
	BITMAPINFOHEADER bi;
	
	FILE *Comic_fp = fopen("Comic.bmp","wb");
	
	if(NULL == Comic_fp)
	{
		printf("Can't open Comic.bmp\n");
		return -1;
	}
	
	memset(&bf, 0, sizeof(bf));
	memset(&bi, 0, sizeof(bi));
	
	bmp = BMP24_img;
	memcpy(&bf,bmp,14);
	memcpy(&bi,&bmp[14],40);
	
	fwrite(&bf,sizeof(BITMAPFILEHEADER),1,Comic_fp);
	fwrite(&bi,sizeof(BITMAPINFOHEADER),1,Comic_fp);
	
	height = bi.biHeight;
	width  = bi.biWidth;
	bfsize = bf.bfSize;
	biBitCount = bi.biBitCount;
	line_byte = WIDTHBYTES(width*bi.biBitCount);
	img_data = bmp+54;
	
	dst = (T_U8 *)malloc(line_byte*height);
	memset(dst,0,line_byte*height);
	memcpy(dst,img_data,line_byte*height);

	for (i = 0;i < height;i++)
	{
		for (j = 0; j < width;j++)
		{
			Imgindex = i*line_byte+3*j;

			R = img_data[Imgindex+2];
			G = img_data[Imgindex+1];
			B = img_data[Imgindex];

			pix = G-B+G+R;
			if (pix < 0) pix = -pix;
			pix = pix * R / 256;
			if(pix > 255) pix = 255;
			dst[Imgindex+2] = (T_U8)pix;

			pix = B-G+B+R;
			if (pix < 0) pix = -pix;
			pix = pix * R / 256;
			if(pix > 255) pix = 255;
			dst[Imgindex+1] = (T_U8)pix;

			pix = B-G+B+R;
			if (pix < 0) pix = -pix;
			pix = pix * G / 256;
			if(pix > 255) pix = 255;
			dst[Imgindex] = (T_U8)pix;
		}
	}

	
	for (i = 0; i < height;i++)
	{
		for (j = 0;j <width;j++)
		{
			Imgindex = i*line_byte+3*j;
			R = dst[Imgindex+2];
			G = dst[Imgindex+1];
			B = dst[Imgindex];

			gray = (T_U8)((19661 * R + 38666 * G + 7209 * B) >> 16);
			dst[Imgindex] = dst[Imgindex+1] = dst[Imgindex+2] = gray;

		}
	}



	fwrite(dst,line_byte*height,1,Comic_fp);
	fclose(Comic_fp);
	Comic_fp = NULL;
	free(dst);
	return 0;
 
 }


图像效果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值