CSkin博客

标题: 【图片裁剪】一个C#图片缩小剪切方法ImgReduceCutOut [打印本页]

作者: 乔克斯    时间: 2014-9-9 09:36
标题: 【图片裁剪】一个C#图片缩小剪切方法ImgReduceCutOut
[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
谢谢楼主,共同学习




欢迎光临 CSkin博客 (http://bbs.cskin.net/) Powered by Discuz! X3.2