• ASP.NET(C#)下使用AspJpeg组件


    转自http://hpping.hdut.com/info/113/46284111.aspx

    一、为图片添加水印
    //实例化组件
    ASPJPEGLib.IASPJpeg objJpeg = new ASPJPEGLib.ASPJpeg();
    //打开源图片文件
    objJpeg.Open(Server.MapPath("aaa.JPG"));
    //添加水印文字
    objJpeg.Canvas.Font.Color = 0xFF0000; // 水印字体颜色
    objJpeg.Canvas.Font.Family = "Courier New";//水印字体
    objJpeg.Canvas.Font.Size = 14;//水印字体大小
    objJpeg.Canvas.Font.Bold = 1; // 是否粗体,粗体用:True(1),False(0)
    objJpeg.Canvas.Font.Quality = 4; // 品质
    objJpeg.Canvas.Font.BkMode = "Opaque"; // 字体背景颜色,这里为透明(Opaque)

    objJpeg.Canvas.Print( 10, 10, "Copyright (c) Hdut.Com", Missing.Value );//水印文字,两个数字10为水印的xy座标
    objJpeg.Save( Server.MapPath("aaa_water.jpg") );
    objJpeg = null;//注销组件,释放资源

    ===============================================================================================

    二、生成缩略图
    //实例化组件
    ASPJPEGLib.IASPJpeg objJpeg = new ASPJPEGLib.ASPJpeg();
    //打开源图片文件
    objJpeg.Open(Server.MapPath("aaa.JPG"));
    //对图片进行50%操作
    objJpeg.Width = objJpeg.OriginalWidth / 2;
    objJpeg.Height = objJpeg.OriginalHeight / 2;
    //如果必要进行锐化
    objJpeg.Sharpen(1, 130 );
    objJpeg.Save(Server.MapPath("aaa_small.jpg"));//生成缩略图位置及名称
    objJpeg = null;//注销组件,释放资源

    ===============================================================================================

    三、安全码

    安全码的道理和加水印差不多,很多朋友问我要具体的代码技术,在这里我就写出来和大家分享,一般人我还不告诉他。呵呵。
    生成安全码的图片。当然你要预先准备一张背景图哦

    //得到4位数的验证码
    Random rd = new Random();
    Session["random_num"] = rd.Netx(1000,9999);
    //实例化组件
    ASPJPEGLib.IASPJpeg objJpeg = new ASPJPEGLib.ASPJpeg();
    //打开背景图片文件
    objJpeg.Open(Server.MapPath("back.JPG"));
    Jpeg.Canvas.Font.Color = &H006699
    Jpeg.Canvas.Font.Family = "Arial Black"
    Jpeg.Canvas.Font.Bold = false
    Jpeg.Canvas.PrintText 0, -2, random_num
    jpeg.save(Server.MapPath("random_index.jpg")) //保存
    <img src="random_index.jpg" border="0" align="absmiddle">
    自己做做看。呵呵。

    ===============================================================================================

    四、图片切割

    一直以来,对aspjpeg不了解的人以为是无法用它来进行切割的。
    其实有这样的一个方法的:crop(x1,y1,x2,y2)
    切割长方型左上角x坐标,y坐标 右下角x坐标 y坐标

    //实例化组件
    ASPJPEGLib.IASPJpeg objJpeg = new ASPJPEGLib.ASPJpeg();
    //打开图片文件
    objJpeg.Open(Server.MapPath("aaa.JPG"));
    objJpeg.width=70
    objJpeg.Height = objJpeg.OriginalHeight*70;
    objJpeg.crop(0,0,70,52);//开始切割其实是把超过52象素的下部分去掉
    objJpeg.save(server.MapPath("aaa_1.gif"));//保存
    怎么样,很简单吧

    ===============================================================================================

    五、图片合并

    我们这里是要把logo图片加到aaa.jpg图片上去
    其实,图片合并的方法也可以用来动态打水印哦

    //实例化组件
    ASPJPEGLib.IASPJpeg objJpeg = new ASPJPEGLib.ASPJpeg();
    //打开图片文件
    objJpeg.Open(Server.MapPath("aaa.JPG"));
    //实例化logo组件
    ASPJPEGLib.IASPJpeg logo = new ASPJPEGLib.ASPJpeg();
    //打开logo图片文件
    logo.Open(Server.MapPath("logo.JPG"));
    Logo.Width = 70;
    Logo.Height = Logo.Width * Logo.OriginalHeight / Logo.OriginalWidth;//重新定义大小
    //将logo合并到图片中去
    objJpeg.DrawImage(0, 0, Logo);

    补充说明:
    DrawImage(int x,int y,ASPJPEGLib.ASPJpeg Image,object Opacity,object TranspColor,object Deviation)
    x:           横坐标
    y:           纵坐标
    Image:       图片
    Opacity:     默认为1,使用透明,可取值为0,1
    TranspColor: 透明颜色,十六进制
    Deviation:   透明值(0-255),默认为0
    ===============================================================================================

    这里建议使用:objJpeg.Canvas.DrawPNG(x,y,Server.MapPath("/images/hhdut.png"));
    这样不仅快些,而且不会出错

    六、数据库支持

    //实例化组件
    ASPJPEGLib.IASPJpeg objJpeg = new ASPJPEGLib.ASPJpeg();
    // 打开图片数据源
    object obj = eData.GetData("select images from img where id=12");
    objJpeg.OpenBinary(obj);
    //将图片显示出来
    objJpeg.SendBinary( Missing.Value );

    objJpeg.SendBinary 这里用了SendBinary的输出方法。当然,你也可以先保存更改后的aaa.jpg,再输入也可以。我个人不大喜欢用SendBinary方法,在网速慢的时候容易出错。在速度方面也不怎样。呵呵。


    ===============================================================================================

    七、更多方法介绍

    //画一条直线
    Canvas.Line(Left, Top, Right, Bottom);
    //画出一个椭圆
    Canvas.Ellipse(Left, Top, Right, Bottom);
    //画出一个圆
    Canvas.Circle(X, Y, Radius);
    //画出一个长方形,上面有代码介绍了
    Canvas.Bar(Left, Top, Right, Bottom);
    //文字阴影颜色
    Canvas.Font.ShadowColor;
    //阴影X坐标设定
    int64 Canvas.Font.ShadowXOffset;
    //Y坐标设定
    int64 Canvas.Font.ShadowYOffset;
    //文字背景
    String Canvas.Font.BkMode;

    ========================================================

    相关文件下载:https://files.cnblogs.com/wangpei/AspJpegDLL.rar

  • 相关阅读:
    GeoHash核心原理解析
    线程安全与可重入函数
    malloc和free的实现
    数字金字塔最大路径和——递归
    TCP连接建立与断开
    Gray Code
    C压缩字符串中的空格
    C++链接与装载
    epoll测试实例
    C++之手写strlen函数
  • 原文地址:https://www.cnblogs.com/wangpei/p/1420695.html
Copyright © 2020-2023  润新知