C#中按指定质量保存图片的实例代码

在程序中直接生产jpg图片,质量不如原图,是因为微软的Image.Save方法保存到图片压缩质量为75,所以保存的图片质量偏低了,要使生成的图片质量有所提高就需要自己设定EncoderParameters类的质量参数和ImageCodecInfo类的图片保存格式。

System.Drawing.Imaging.Encoder类来制定需要呈现的方式和各种参数,例如图片质量参数,扫描方法参数,色度表参数,压缩参数,颜色深度等等.到此,大家应该明白修改图片质量的步骤和方法了.主要就是对System.Drawing.Imaging.Encoder设置,然后通过System.Drawing.Imaging.Encoder构造出来EncoderParameter类,将EncoderParameter传递给EncoderParameters数组,从而得到一个完全符合自己意愿的图片!呵呵,说了一大堆.其实代码很简单:

先引入:using System.Drawing.Imaging;

代码如下:

/// <summary>
        /// 按指定的压缩质量及格式保存图片(微软的Image.Save方法保存到图片压缩质量为75)
        /// </summary>
        /// <param name="sourceImage">要保存的图片的Image对象</param>
        /// <param name="savePath">图片要保存的绝对路径</param>
        /// <param name="imageQualityValue">图片要保存的压缩质量,该参数的值为1至100的整数,数值越大,保存质量越好</param>
        /// <returns>保存成功,返回true;反之,返回false</returns>
        public bool SaveImageForSpecifiedQuality(System.Drawing.Image sourceImage, string savePath, int imageQualityValue)
        {
            //以下代码为保存图片时,设置压缩质量
            EncoderParameters encoderParameters = new EncoderParameters();
            EncoderParameter encoderParameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, imageQualityValue);
            encoderParameters.Param[0] = encoderParameter;
            try
            {
                ImageCodecInfo[] ImageCodecInfoArray = ImageCodecInfo.GetImageEncoders();
                ImageCodecInfo jpegImageCodecInfo = null;
                for (int i = 0; i < ImageCodecInfoArray.Length; i++)
                {
                    if (ImageCodecInfoArray[i].FormatDescription.Equals("JPEG"))
                    {
                        jpegImageCodecInfo = ImageCodecInfoArray[i];
                        break;
                    }
                }   
                sourceImage.Save(savePath, jpegImageCodecInfo, encoderParameters);              
                return true;
            }
            catch
            {
                return false;
            }
        }

调用方法:

代码如下:

System.Drawing.Image image = System.Drawing.Image.FromFile("D:\\TestImage\\0.jpg");
SaveImageForSpecifiedQuality(image, "D:\\TestImage\\1.jpg", 100, ImageFormat.Jpeg);image.Dispose();

(0)

相关推荐

  • C# 实现的图片盖章功能,支持拖拽、旋转、放缩、保存

    实现图片盖章功能,在图片上点击,增加"图章"小图片,可以拖拽"图章"到任意位置,也可以点击图章右下角园框,令图片跟着鼠标旋转和放缩. 操作方法:1.点击增加"图章"2.选中移动图标3.点中右下角放缩旋转图章. 效果图: 实现代码如下: 1.  窗口Xaml代码 复制代码 代码如下: <Window x:Class="Lenovo.YogaPaster.ImageEditWindow"    xmlns="htt

  • C#保存图片到数据库并读取显示图片的方法

    复制代码 代码如下: private void button2_Click_1(object sender, System.EventArgs e) { string pathName; if (this.openFileDialog1.ShowDialog()==System.Windows.Forms.DialogResult.OK) { pathName = this.openFileDialog1.FileName; System.Drawing.Image img = System.D

  • C#实现将网页保存成图片的网页拍照功能

    本文实例主要实现了网页照相机程序的功能.C#实现将网页保存成图片格式,简单实现网页拍照,主要是基于ActiveX 组件的网页快照类,AcitveX 必须实现 IViewObject 接口.因此读者完全可扩展此类将其用于你的C#软件项目中.在此特别感谢作者:随飞提供的代码. 主要功能代码如下: using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices

  • c#利用Grahics进行图片裁剪

    最开始用了 复制代码 代码如下: /// <summary>        /// 裁剪图片        /// </summary>        /// <param name="imagePath"/>        /// <param name="savePath">"c:\images\"</param>        private List<string>

  • c#读取图像保存到数据库中(数据库保存图片)

    复制代码 代码如下: 注:MyTools.g_PhotoField为数据库表中的图象字段名称//将图片保存到数据库中    if(this.picPhoto.Image==null)    {     m_DataRow[MyTools.g_PhotoField]=DBNull.Value;    }    else    {     try      {      MemoryStream ms = new MemoryStream ();      picPhoto.Image.Save (

  • C# 手动/自动保存图片的实例代码

    view plaincopy to clipboardprint? 复制代码 代码如下: //手动保存图片           private void saveBtn_Click(object sender, System.EventArgs e)           {               bool isSave = true;               SaveFileDialog saveImageDialog = new SaveFileDialog();          

  • C#实现对图片文件的压缩、裁剪操作实例

    本文实例讲述了C#对图片文件的压缩.裁剪操作方法,在C#项目开发中非常有实用价值.分享给大家供大家参考.具体如下: 一般在做项目时,对图片的处理,以前都采用在上传时,限制其大小的方式,这样带来诸多不便.毕竟网站运维人员不一定会对图片做处理,经常超出大小限制,即使会使用图片处理软件的,也由于个人水平方面原因,处理效果差强人意. 于是采用C#为我们提供的图像编辑功能,实现一站式上传,通过程序生成所需大小.尺寸的目标图片. 具体步骤如下: 先说图片压缩: 第一步:需要读取一个图片文件,读取方法: //

  • C#实现在服务器端裁剪图片的方法

    本文实例讲述了C#实现在服务器端裁剪图片的方法.分享给大家供大家参考.具体实现方法如下: //图片路径 String oldPath = Server.MapPath("~/62223231.jpg"); //新图片路径 String newPath = System.IO.Path.GetExtension(oldPath); //设置截取的坐标和大小 int x = 0, y = 20, width = 200, height = 2400; //计算新的文件名,在旧文件名后加_n

  • C#如何实现图片的剪裁并保存

    最近需要将一张图片上传并按指定位置剪裁,后来在网上找了一个剪裁图片的插件,但是只有前台没有后端,然后我各种百度,并最终完成,特此写一篇博客略表纪念. 前台我就不说了,用的cropper插件,有兴趣的自己去百度找找吧.我们 有这个插件. 下面是代码: HttpPostedFile file = context.Request.Files["avatar_file"]; string datasize = context.Request.Params["avatar_data&q

  • c#图片处理之图片裁剪成不规则图形

    为了让大家知道下面内容是否是自己想要的,我先发效果图. 好了,那就开始贴代码了 以下为一个按钮的事件,为裁剪准备图片.裁剪路径.保存路径 复制代码 代码如下: private void button1_Click(object sender, EventArgs e)        {            GraphicsPath path = new GraphicsPath();            Point[] p = {                            new

  • C#保存上传来的图片示例代码

    复制代码 代码如下: [HttpPost] public string UploadImage() { //string ss = Request.Form["uploadFile"]; //return ss; HttpPostedFileBase uploadFile = Request.Files[0]; string fileName = uploadFile.FileName; int fileSize = uploadFile.ContentLength; string f

  • c#裁剪图片后使用zxing生成二维码示例分享

    复制代码 代码如下: /// <summary>/// 生成二维码/// </summary>/// <param name="fileName">生成二维码路径</param>/// <param name="url">生成的内容</param>/// <param name="width">二维码宽</param>/// <param nam

随机推荐