Asp.net中为图像加入版权信息

 

      你试过用 .net 来进行图像处理吗?公司最近进行的一个项目,数据库中存入了很多的产品图片,可是都没有版权信息,当时客户要求将所有的图片打上公司名称?这时候,你该怎么办?
对这一问题的解决方案还是很多,归结如下:
 
1 使用图形处理软件,如 Photoshop 等,利用其批处理功能,可以实现这个功能,可是每次数据录入员加进图片的话,还得加工一下图片,很麻烦的,看录入员大姐平常对我很不错,每日笑脸相迎,能忍心折磨她么?这个方案否决了。
 
2 使用 .net 行云流水般的图像处理,当录入员大姐上传图片的时候,就自动加上公司标记,这样岂不更好,嗯,这想法不错,可以进入 2005 最佳解决方案第万强了,好说干就干。
 
using  System.Drawing;
using  System.IO;
using  System.Drawing.Imaging;
        
private  void  AddTextToImg( string  fileName, string  text)
        {
            
if (!File.Exists(MapPath(fileName)))
            {
                
throw  new  FileNotFoundException("The file don't exist!");
            }
            
            
if ( text ==  string .Empty )
            {
                
return ;
            }
            
// 还需要判断文件类型是否为图像类型,这里就不赘述了
            System.Drawing.Image image = System.Drawing.Image.FromFile(MapPath(fileName));
            Bitmap bitmap = 
new  Bitmap(image,image.Width,image.Height);
            Graphics g = Graphics.FromImage(bitmap);
            
float  fontSize = 12.0f;              // 字体大小
             float  textWidth = text.Length*fontSize;   // 文本的长度
            //
下面定义一个矩形区域,以后在这个矩形里画上白底黑字
             float  rectX = 0;        
            
float  rectY = 0;
            
float  rectWidth = text.Length*(fontSize+8);
            
float  rectHeight = fontSize+8;
            
// 声明矩形域
            RectangleF textArea =  new  RectangleF(rectX,rectY,rectWidth,rectHeight);
            Font font = 
new  Font(" 宋体 ",fontSize);    // 定义字体
            Brush whiteBrush =  new  SolidBrush(Color.White);    // 白笔刷,画文字用
            Brush blackBrush =  new  SolidBrush(Color.Black);    // 黑笔刷,画背景用
            g.FillRectangle(blackBrush,rectX,rectY,rectWidth,rectHeight);            
            g.DrawString(text,font,whiteBrush,textArea);
            MemoryStream ms = 
new  MemoryStream( );
            
// 保存为 Jpg 类型
            bitmap.Save(ms,ImageFormat.Jpeg);    
            
// 输出处理后的图像,这里为了演示方便,我将图片显示在页面中了
            Response.Clear();
            Response.ContentType = "image/jpeg";
            Response.BinaryWrite( ms.ToArray() );
            g.Dispose();
            bitmap.Dispose();
            image.Dispose();
        }
 
调用时很简单
 
 AddTextToImg( " me.jpg " , " Netken " );
 
一切 OK 了,这样会在 me.jpg 上打印 Netken 的版权信息,呵呵,感觉 .net 确实好强大,这些功能在 Asp 中可是奢侈品了,而在 .Net 环境中却能轻而易举的完成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值