今天查找以前寫的畫圖程序,想完善一下,發現
圖片添加文字水印時候會有些模糊,特別是小字體的時候特別模糊,
經過一番調適,終於發現了問題
帖上代碼,警示自己
System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath("b1.jpg"));
Bitmap bitWaterMark = new Bitmap(image.Width, image.Height);
Graphics g = Graphics.FromImage(bitWaterMark);
g.DrawImage(image, 0, 0, image.Width, image.Height);
Font f = new Font("verdana", 14);
Brush c = new SolidBrush(Color.FromName("red"));
string addtext = "測試字體啊";
g.DrawString(addtext, f, c, 10, 1);
g.Dispose();
image.Dispose();
System.IO.MemoryStream ms = new System.IO.MemoryStream();
bitWaterMark.Save(ms, ImageFormat.Bmp);
//bitWaterMark.Save(ms, ImageFormat.Jpeg);
//重新生成Image對象
System.Drawing.Image img2 = System.Drawing.Image.FromStream(ms);
//返回新的Image對象
//bitWaterMark.Save(Server.MapPath("test.jpg"));
img2.Save(Server.MapPath("test.jpg"));
//img2.Save(Server.MapPath("test.jpg"), ImageFormat.Jpeg);
bitWaterMark.Dispose();
紅色字體部分是問題所在,今天才發現這個問題,我想如果用C#畫圖的朋友也會發現這個問題
用bitemap類不管是存儲到文件,還是存儲為數據流來處理 image 對象時候,如果 加上ImageFormat.Jpeg
都會讓圖片變模糊,真是很詭異,如果 必須要存儲為數據流,那么用ImageFormat.Bmp存儲然后保存,生成的圖片也會比ImageFormat.Jpeg要清晰的多,但問題終於解決了,生成的圖片很清晰了。