为什么我用GDI绘图,在绘图时只用了RGB(0,255,0) RGB(255,0,0) RGB(0,0,0) 三种色,可是绘出来的图保存为jpg 后再打开就出现很多种杂色了? 请问如何能保证不出现这三种色以外的色?

解决方案 »

  1.   

    应该不会出现才对,也许是保存的时候有问题,你可用先绘制到窗体上看看颜色下载一次,就能不断自动更新,欢迎使用《Csdn收音机》!
      

  2.   

    保存的时候,你是怎么样保存的
    贴图片很累吧,用《Csdn收音机》截图功能轻松解决!
      

  3.   

    bitmap.save 保存为jpg文件 然后再用代码检查打开后文件的每个像素,结果发现很多像素的色并不是我要的纯色,而是比如果(20,23,52) 之类的杂色
      

  4.   

    JPG是有损压缩,保存的时候一般压缩率设置为8就可以了,太低图像失真
      

  5.   

    Save的重载方法里应该有ImageCodecInfo,EncoderParameters的设置吧。可以通过
    EncoderParameters eps = new EncoderParameters(1);
    EncoderParameter ep = new EncoderParameter(enc, 90L);//质量等级90%   
    eps.Param[0] = ep;
    来设置保存的质量等级。回答问题要查资料?用《Csdn收音机》可以最快速度搞定!
      

  6.   

    不是很明白,这个不和Bitmap对象关联起来怎么起作用?
      

  7.   

    ImageCodecInfo ImageCodecInfo1 = null;
                ImageCodecInfo[] encoders = ImageCodecInfo.GetImageDecoders();
                foreach (ImageCodecInfo imageCodecInfo in encoders)
                {
                    if (imageCodecInfo.FormatDescription == "JPEG")
                    {
                        ImageCodecInfo1 = imageCodecInfo;
                        break;
                    }
                }
                EncoderParameters ep = new EncoderParameters(1);
                ep.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 50L);
                bitmap.Save(@"c:\2.jpg", ImageCodecInfo1, ep);
    你这样用看看使用《Csdn收音机》截图功能,轻松制作图文并茂的文章!
      

  8.   

    搞定  private static ImageCodecInfo GetEncoderInfo(String mimeType)
            {
                int j;
                ImageCodecInfo[] encoders;
                encoders = ImageCodecInfo.GetImageEncoders();
                for (j = 0; j < encoders.Length; ++j)
                {
                    if (encoders[j].MimeType == mimeType)
                        return encoders[j];
                }
                return null;
            }
    调用:
     System.Drawing.Imaging.Encoder myEncoder;
                EncoderParameter myEncoderParameter;
                EncoderParameters myEncoderParameters;
                ImageCodecInfo myImageCodecInfo = ImageCodecInfo.GetImageEncoders()[0];
                myEncoder = System.Drawing.Imaging.Encoder.Quality;
                myEncoderParameters = new EncoderParameters(1);
                myEncoderParameter = new EncoderParameter(myEncoder, 95L);
                myEncoderParameters.Param[0] = myEncoderParameter;//将构建出来的EncoderParameter类赋给EncoderParameters数组 
                
                myImageCodecInfo = GetEncoderInfo("image/jpeg");            bmp.Save(file,myImageCodecInfo,myEncoderParameters);