如JPEG,直接生成的品质很差。

解决方案 »

  1.   

    应该是在
    [C#]
    public void Save(
       string filename,
       ImageCodecInfo encoder,
       EncoderParameters encoderParams
    );encoder和encoderParams上做文章,我也是学习:)
      

  2.   

    确实如此,品质很差.关注ing..
      

  3.   

    印象中有一个属性是设置图片的质量,但是具体我也网了,保存的方式重载几次,但好象都没有设置质量的,你还是查查MSDN
      

  4.   

    /// <summary>
    /// 不失真获得缩微图
    /// </summary>
    /// <returns></returns>
    public bool GetThumbImg()
    {
    try
    {
    string imgpath;//原始路径
    if(imgsourceurl.IndexOf("\\",0)<0)//使用的是相对路径
    {
    imgpath=HttpContext.Current.Server.MapPath(imgsourceurl);//转化为物理路径
    }
    else
    {
    imgpath=imgsourceurl;
    }
    System.Drawing.Image sourceImage = System.Drawing.Image.FromFile(imgpath);
    int width = sourceImage.Width;
    int height = sourceImage.Height;
    if(thumbwidth<=0)
    {
    thumbwidth=120;
    }
    if(thumbwidth>=width)
    {
    return false;
    }
    else
    {
    //关键在这里:
    Image imgThumb=new System.Drawing.Bitmap(thumbwidth,height*thumbwidth/width);
    System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(imgThumb);
    g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
    g.DrawImage(sourceImage, new Rectangle(0, 0, thumbwidth,height*thumbwidth/width), 0, 0, width, height, GraphicsUnit.Pixel);
    string thumbpath="";
    sourceImage.Dispose();
    //myBitmap.Dispose();
    if(thumburl=="")
    {
    //File.Delete(HttpContext.Current.Server.MapPath(imgpath));
    thumbpath=imgpath;
    }

    if(thumbpath.IndexOf("\\",0)<0)//使用的是相对路径
    {
    thumbpath=HttpContext.Current.Server.MapPath(thumburl);//转化为物理路径
    }

    imgThumb.Save(thumbpath,ImageFormat.Jpeg);
    imgThumb.Dispose();
    return true;
    }
    }
    catch
    {
    throw;
    }
    }