c#图片处理之给你的图片打上logo

c#图片处理之给你的图片打上logo

ID:15438931

大小:39.00 KB

页数:12页

时间:2018-08-03

c#图片处理之给你的图片打上logo_第1页
c#图片处理之给你的图片打上logo_第2页
c#图片处理之给你的图片打上logo_第3页
c#图片处理之给你的图片打上logo_第4页
c#图片处理之给你的图片打上logo_第5页
资源描述:

《c#图片处理之给你的图片打上logo》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C#图片处理之给你的图片打上LOGOC#图片处理之:给你的图片打上LOGO做图片处理软件,肯定会遇到这样的需求:如何把一张图片放在另一张图片上,比如在大图片中打上公司或个人的Logo等等。其实原理很简单。假设我们有一张800*600的大图片(Bitmapb0),想在(10,10)的位置上打上Logo(Bitmapb1),Logo图片大小是150*30。很简单,我们以大图片的(10,10)位置作为起始位置,做一个150*30的矩形,把Logo图片整个替换这个矩形。老规矩,还是用BitmapData来帮助我们实现这个功能。//取以大图(X,Y)为起点,w

2、*h的矩形区域BitmapDatasrcData=b0.LockBits(newRectangle(X,Y,w,h),ImageLockMode.WriteOnly,PixelFormat.Format24bppRgb);//取整个LogoBitmapDatadstData=b1.LockBits(newRectangle(0,0,w,h),ImageLockMode.ReadOnly,PixelFormat.Format24bppRgb);unsafe{byte*pIn=(byte*)srcData.Scan0.ToPointer();byte*p

3、Logo=(byte*)dstData.Scan0.ToPointer();for(inty=0;y

4、Logo的功能就实现了。当然,还可以有别的方法,比如用BitBlt这个API函数,或者使用GDI+的DrawImage函数。但这样有个小问题,Logo区域永远是个矩形。假如我的Logo是个圆形,只希望在大图上出现圆形的Logo而不是整块矩形,那又该如何实现呢?这个问题其实可以这样理解:我们让Logo的背景变透明。而所谓透明,就是两张图片叠加时,上层图片“透明”区域中的像素,仍然使用下层图的相应像素来代替。但在RGB模式下,并没有“透明”这个概念(我们的讨论都在用PixelFormat.Format24bppRgb,PixelFormat.Format

5、32bppArgb中的Alpha分量支持“透明度”),因此我们需要自己规定一种颜色,凡是这个颜色的,都作为“透明”处理。比如,我们的Logo是黑底的,那么就指定黑色作为透明色。修改算法也很简单,凡是遇到Logo图中像素颜色是黑色(当然这是个参数,可以自己改)的,就用大图相应位置的颜色来代替,否则还是使用Logo的像素色。下面是算法://因为有可能要回写,所以原图的ImageLockMode这次是ReadWriteBitmapDatasrcData=b0.LockBits(newRectangle(X,Y,w,h),ImageLockMode.Read

6、Write,PixelFormat.Format24bppRgb);BitmapDatadstData=b1.LockBits(newRectangle(0,0,w,h),ImageLockMode.ReadOnly,PixelFormat.Format24bppRgb);unsafe{byte*pIn=(byte*)srcData.Scan0.ToPointer();byte*pLogo=(byte*)dstData.Scan0.ToPointer();for(inty=0;y

7、否透明色//取得当前色Colorc=Color.FromArgb(pLogo[2],pLogo[1],pLogo[0]);if(!ColorIsSimilar(c,TransColor,delta)){//不是透明色,b0当前位置的颜色用b1对应位置的来代替pIn[0]=(byte)pLogo[0];pIn[1]=(byte)pLogo[1];pIn[2]=(byte)pLogo[2];}pIn+=3;pLogo+=3;}pIn+=srcData.Stride-w*3;pLogo+=dstData.Stride-w*3;}b0.UnlockBits(

8、srcData);b1.UnlockBits(dstData);}我们在上面的算法中出现了另一个小算法,判断

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。