Translate Into English Coffee & Tea
ASP.NET 中的 AJAX ASP.NET 画图全接触 ASP.NET 与 XML 声明式数据绑定 ASP.NET 网页抓取
C# 基础 C# 类教程 C# 加密 ASP.NET 成员资格 非“自动化”处理 Excel
QuickAjax Ajax 完美的语法高亮器 Silverlight Popfly
通栏广告
ASP.NET 画图与图像处理-压缩图片质量

现在数码相机拍摄的照片一般都是上 M 的,这样的照片传到网上去是不太现实的,通过压缩其图片质量,可以大大减少文件大小。

System.Drawing.Bitmap img = new System.Drawing.Bitmap("C:\\source.jpg"); //相机中的照片
//System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(img);


System.Drawing.Imaging.ImageCodecInfo encoder = GetEncoderInfo("image/jpeg");
if (encoder != null)
{
    //有我们需要的编码器
    
    //EncoderParameters 是封装 EncoderParameter 对象的数组。 
    //构造函数中参数值 1 表示 EncoderParameters 含有一个EncoderParameter
    System.Drawing.Imaging.EncoderParameters encoderParams =
       new System.Drawing.Imaging.EncoderParameters(1); 
    
    //System.Drawing.Imaging.Encoder 对象封装一个全局唯一标识符 (GUID),它标识图像编码器参数的类别。
    //设置 jpeg 质量为 60,注意应该为 long 类型
    encoderParams.Param[0] =
        new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, (long)60);
    
    //使用指定编码器按指定参数保存图片
    img.Save("C:\\destination.jpg", encoder, encoderParams);
    
    encoderParams.Dispose();
}


//graphics.Dispose();
img.Dispose();

 

//根据 mime 类型,返回编码器
private System.Drawing.Imaging.ImageCodecInfo GetEncoderInfo(string mimeType)
{
    System.Drawing.Imaging.ImageCodecInfo result = null;
    
    //检索已安装的图像编码解码器的相关信息。
    System.Drawing.Imaging.ImageCodecInfo[] encoders =
        System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders();
    for (int i = 0; i < encoders.Length; i++)
    {
        if (encoders[i].MimeType == mimeType)
        {
            result = encoders[i];
            break;
        }
    }

    return result;
}

说明:保存的图片,可以用 Photoshop 直接打开。

文章评论
标题:必填
内容:
文章信息