最近一直在處理打印的相關問題,有人提出來,打印出來的圖片很模糊。
然後自己就分析了一下,爲什麼打印出來的圖片會很模糊。
由於涉及到圖片的縮放,圖片的縮放代碼如下,把先關的參數都設置爲高質量
public static Bitmap ChangeImgSize(Image bit, int Width, int Height)
{
Bitmap newBitmap = new Bitmap(Width, Height);
Graphics g = Graphics.FromImage(newBitmap);
Rectangle newArea = new Rectangle(0, 0, Width, Height);
g.Clear(Color.Transparent);//這句可能存在問題
//設置畫布的描繪質量
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
//防止出現漸變
// var imgAtt = new ImageAttributes();
// imgAtt.SetWrapMode(WrapMode.TileFlipXY);
g.DrawImage(bit, newArea, 0, 0, bit.Width, bit.Height, GraphicsUnit.Pixel);
g.Dispose();
return newBitmap;
}
雖然這樣處理了,但項目上還是有人提出來很模糊。
最終查出來原因,是因爲,原始的圖片不滿足指定的大小,需要反覆縮放,導致每一次縮放都會模糊一點,這些累積的誤差,最後的結果就是打印出來的圖片很模糊。
因此最終的代碼也就很簡單,在縮放的過程中,只改變圖片的寬度和高度,只在實際打印時,縮放一次,這樣就清晰多了。