作者: 乔克斯
查看: 2003|回复: 1

主题标签Tag

[教程] 【图片裁剪】一个C#图片缩小剪切方法ImgReduceCutOut

[复制链接]
乔克斯 发表于 2014-9-9 09:36:37 | 显示全部楼层 |阅读模式
查看: 2003|回复: 1
[C#] 纯文本查看 复制代码
/// <summary>
/// 缩小裁剪图片
/// </summary>
/// <param name="int_Width">要缩小裁剪图片宽度</param>
/// <param name="int_Height">要缩小裁剪图片长度</param>
/// <param name="input_ImgUrl">要处理图片路径</param>
/// <param name="out_ImgUrl">处理完毕图片路径</param>
public void ImgReduceCutOut(int int_Width, int int_Height, string input_ImgUrl, string out_ImgUrl) {
    // ===上传标准图大小===
    int int_Standard_Width = 160;
    int int_Standard_Height = 160;

    int Reduce_Width = 0; // 缩小的宽度
    int Reduce_Height = 0; // 缩小的高度
    int CutOut_Width = 0; // 裁剪的宽度
    int CutOut_Height = 0; // 裁剪的高度
    int level = 100; //缩略图的质量 1-100的范围

    // ===获得缩小,裁剪大小===
    if (int_Standard_Height * int_Width / int_Standard_Width > int_Height) {
        Reduce_Width = int_Width;
        Reduce_Height = int_Standard_Height * int_Width / int_Standard_Width;
        CutOut_Width = int_Width;
        CutOut_Height = int_Height;
    } else if (int_Standard_Height * int_Width / int_Standard_Width < int_Height) {
        Reduce_Width = int_Standard_Width * int_Height / int_Standard_Height;
        Reduce_Height = int_Height;
        CutOut_Width = int_Width;
        CutOut_Height = int_Height;
    } else {
        Reduce_Width = int_Width;
        Reduce_Height = int_Height;
        CutOut_Width = int_Width;
        CutOut_Height = int_Height;
    }

    // ===通过连接创建Image对象===
    System.Drawing.Image oldimage = System.Drawing.Image.FromFile(Server.MapPath(input_ImgUrl));

    // ===缩小图片===
    System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage(Reduce_Width, Reduce_Height, new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
    Bitmap bm = new Bitmap(thumbnailImage);

    // ===处理JPG质量的函数===
    ImageCodecInfo[] codecs = ImageCodecInfo.GetImageEncoders();
    ImageCodecInfo ici = null;
    foreach (ImageCodecInfo codec in codecs) {
        if (codec.MimeType == "image/jpeg")
            ici = codec;
    }
    EncoderParameters ep = new EncoderParameters();
    ep.Param[0] = new EncoderParameter(Encoder.Quality, (long)level);

    //bm.Save(Server.MapPath("2.jpg"), ici, ep);

    // ===裁剪图片===
    Rectangle cloneRect = new Rectangle(0, 0, CutOut_Width, CutOut_Height);
    PixelFormat format = bm.PixelFormat;
    Bitmap cloneBitmap = bm.Clone(cloneRect, format);

    // ===保存图片===
    cloneBitmap.Save(Server.MapPath(out_ImgUrl), ici, ep);
}

回复 论坛版权

使用道具 举报

758132951 发表于 2017-3-25 10:28:54 | 显示全部楼层
谢谢楼主,共同学习
您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2021-10-20 15:25, Processed in 0.509685 second(s), 33 queries , Gzip On.

快速回复 返回顶部 返回列表