快讯

在BMP文件中隐藏信息

2004-02-14 09:34  出处:PConline  作者:网上收集  责任编辑:zwg 

/*********************************************************************/ void longToStream(FILE* strm, unsigned long int x) { unsigned int bit4,bit3,bit2,bit1; bit4=(unsigned int)x/16777216; x=x-(unsigned long)((unsigned long)bit4*16777216); bit3=(unsigned int)x/65536; x=x-(unsigned long)((unsigned long)bit3*65536); bit2=(unsigned int)x/256; x=x-(unsigned long)((unsigned long)bit2*256); bit1=(unsigned int)x; fprintf(strm,"%c%c%c%c",bit1,bit2,bit3,bit4); } unsigned long int streamToLong(FILE* strm) { unsigned char dataread; unsigned char tmpchar; unsigned long int result=0; dataread=fscanf(strm,"%c",&tmpchar); if (dataread==1) result+=((unsigned long int)tmpchar*1); dataread=fscanf(strm,"%c",&tmpchar); if (dataread==1) result+=((unsigned long int)tmpchar*256); dataread=fscanf(strm,"%c",&tmpchar); if (dataread==1) result+=((unsigned long int)tmpchar*65536); dataread=fscanf(strm,"%c",&tmpchar); if (dataread==1) result+=((unsigned long int)tmpchar*16777216); return result; } unsigned int calcEOLpad(int bitlen, long linelen) { unsigned long int bitsperline; unsigned int padder; bitsperline=(unsigned long)bitlen*(unsigned long)linelen; padder=bitsperline%32; padder=32-padder; if (padder==32) padder=0; return (int)(padder/8); } PIXEL getIndexedPixel(unsigned long int idx, BITMAP* bmp) { unsigned long int offset; PIXEL result; unsigned int EOLpad; unsigned long int x; unsigned long int y; EOLpad=calcEOLpad(24,bmp- >x_size); x=idx%(bmp- >x_size); y=(idx-x)/(bmp- >x_size); y=(bmp- >y_size-1)-y; offset=(y*((bmp- >x_size*3)+EOLpad))+(x*3); result.blue=*(bmp- >raster- >dataspace+(offset++)); result.green=*(bmp- >raster- >dataspace+(offset++)); result.red=*(bmp- >raster- >dataspace+(offset)); return result; } void setIndexedPixel(unsigned long int idx, BITMAP* bmp, PIXEL pix) { unsigned long int offset; unsigned int EOLpad; unsigned long int x; unsigned long int y; EOLpad=calcEOLpad(24,bmp- >x_size); x=idx%(bmp- >x_size); y=(idx-x)/(bmp- >x_size); y=(bmp- >y_size-1)-y; offset=(y*((bmp- >x_size*3)+EOLpad))+(x*3); *(bmp- >raster- >dataspace+(offset++))=pix.blue; *(bmp- >raster- >dataspace+(offset++))=pix.green; *(bmp- >raster- >dataspace+(offset))=pix.red; }
键盘也能翻页,试试“← →”键
IT热词搜索 来源:360新闻
软件论坛帖子排行
相关文章

相关软件:

腾讯QQ2012
大小:52.93 MB 授权:免费
腾讯QQ2012
立即下载
腾讯QQ2013
大小:49.32 MB 授权:免费
腾讯QQ2013
立即下载