红包
◆ [2024-4-24 星期三 18:23] ◆ 您来自:3.133.109.211,欢迎您访问風雲工作室。 收藏本站 ◆ | ◆ 设为首页
联系站长(腾讯QQ)
5029111 [風雲]
站长当前离线
首  页 论坛交流 游戏频道 无忧脚本 旧版论坛 云服务器 聊 天 室 自助链接 来访记录 访客留言 搜索提供
位置:風雲工作室 - 论坛交流 - 技术专栏 - 后台开发 - 【原创】C#压缩图片至指定宽度,并指定压缩质量。 返回
主题:【原创】C#压缩图片至指定宽度,并指定压缩质量。
Rimifon
★☆☆☆☆☆☆☆☆☆
积分:285
发帖:317
登录:2024/3/26
注册:2006/6/28
(1楼)【原创】C#压缩图片至指定宽度,并指定压缩质量。
发现用GetThumbnailImage的方式生成缩略图,如果是大图片,效果还可以,如果是小图片,效果就很差了。改用拉伸图片的方式效果比较不错。
using System;
using System.Drawing;
using System.Drawing.Imaging;

public static void CompressJpeg(string strPath, int intWidth, long lngQuality)
{
        var img = Image.FromFile(strPath);        // 如果不是图片会出错。
        if(img.Width <= intWidth)
        {
                img.Dispose();
                return;
        }
        var intHeight = img.Height * intWidth / img.Width;
        // 创建位图及相关联的图形处理工具,在位图上画缩略图
        var thm = new Bitmap(intWidth, intHeight);
        var grp = Graphics.FromImage(thm);
        grp.DrawImage(img, 0, 0, intWidth, intHeight);
        // 释放占用的图片文件
        img.Dispose();
        grp.Dispose();
        // 设置图片质量
        var ep = new EncoderParameters(1);
        ep.Param[0] = new EncoderParameter(Encoder.Quality, lngQuality);
        // 保存缩略图
        // thm.Save(strPath);        // 如果不设置图片质量,可直接保存
        thm.Save(strPath, ImageCodecInfo.GetImageEncoders().FirstOrDefault(i => i.MimeType == "image/jpeg"), ep);
        thm.Dispose();
}


时间:2009年7月12日 13:27:32 IP:已记录 引用 回复

© Copyright 2006-2024,風雲工作室 All rights reserved.
湘ICP备05009306号QQ登录
操作 1 个库,连接 2 次,执行 7 次,耗时 188 毫秒。