各位大哥。我在使用Bitmap.save()的过程遇到了下面的问题。
我在保存之前,获取了一个8×8块像素的RGB分量,用一个TextBox输出以待观察。
然后使用Bitmap.save(url)保存。
保存后新建一个new Bitmap(url),然后获取之前那个8×8块的RGB分量。发现和之前的不一样。相邻像素值差别大的变平滑了。
难道Bitmap.save()保存过程中会自动优化图像?但是我要获取的是保存之前的值,这可怎么办啊。
我在保存之前,获取了一个8×8块像素的RGB分量,用一个TextBox输出以待观察。
然后使用Bitmap.save(url)保存。
保存后新建一个new Bitmap(url),然后获取之前那个8×8块的RGB分量。发现和之前的不一样。相邻像素值差别大的变平滑了。
难道Bitmap.save()保存过程中会自动优化图像?但是我要获取的是保存之前的值,这可怎么办啊。
EncoderParameters eps = new EncoderParameters(1);
EncoderParameter ep = new EncoderParameter(enc, 90L);//质量等级90%
eps.Param[0] = ep;
来设置保存的质量等级。
如果使用Bitmap.Save(FileName,ImageFormat.Jpeg); 这个会的因为JPEG不是无损压缩的.
GIF 只有256色..这个问题取决你保存的图形格式.
public void Save(
Stream stream,
ImageFormat format
)
Bitmap.Save(url, ImageFormat.Bmp)
System.Drawing.Imaging.Encoder enc = System.Drawing.Imaging.Encoder.Quality;//设置保存质量
上面的enc是这样的
那如果我需要改变之后的RGB分量保存后一丁点都不要更改,按原值保存,质量等级是不是得设置成100%啊?
可能你的水印抗干扰性不好。对于有一定尺寸的图像(只有8*8作为载体当然信息量太小),好的数字水印应该经得起jpeg的量化和变换。