.NET上传图片后自动压缩并裁剪图片

通常用程序生成的缩略图会比正常软件处理的图片模糊,或者是尺寸变化较大时无法显示原图内容。经过一番搜索发现是代码处理的方式不太正确,直接裁剪或在直接缩放容易造成图片变形,显示不全等问题。

该方法需引用组件Magick.NET

处理思路

  1. 先计算出图片的宽高比和要裁剪的尺寸宽高比
  2. 当图片宽高比大于目标尺寸宽高比时,根据高度进行缩放,将原图按比例缩放到目标高度,反之按宽度处理
  3. 图片缩放之后再进行裁剪,即可获得较为清晰的目标图片

代码实现

/// <summary>
/// 裁切图片
/// </summary>
/// <param name="imagePath">图片路径</param>
/// <param name="width">裁剪宽度</param>
/// <param name="height">裁剪高度</param>
/// <param name="isCreateNew">是否另存</param>
private void CutImage(string imagePath, int width, int height, bool isCreateNew = false)
{
    using (MagickImage image = new MagickImage(imagePath))
    {
        if (isCreateNew == true)
        {
            imagePath = imagePath.Insert(imagePath.Length - 4, "_" + width + "_" + height);
        }
        //压缩图片 根据需求调整大小 0-100
        image.Quality = 80;
        var cutWh = width * 1.00 / height;
        var originWh = image.Width * 1.00 / image.Height;
        if (cutWh > originWh)
        //对比宽高比
        if (width / height > image.Width / image.Height)
        {
            image.Resize(width, width / image.Width * image.Height);
        }
        else
        {
            image.Resize(height / image.Height * image.Width, height);
        }
        //裁剪
        image.Crop(width, height);
        //清除多余信息
        image.Strip();
        //保存图片
        image.Write(imagePath);
    };
}

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇