0
基本上,代碼試圖獲取源圖像,在其上繪製一些自定義文本並將新圖像保存到文件系統。僅限WinXP Bitmap.Save ArgumentException參數無效
當我在Windows 7中運行代碼時,它運行良好,但是當我在WinXP中運行它時,它會在第一個DrawString之後的任何時候在imgCopy.Save行中創建一個異常。
ArgumentException異常(參數無效)。這就像DrawString破壞WinXP下的圖像...?
該構建適用於x86/.NET 4.0運行時。任何想法爲什麼在XP下的例外?
// imgSrc is actually passed into the method with the rec object
// this is just for repro
using (var imgSrc = new System.Drawing.Bitmap(rec.SrcFile))
using (var imgCopy = imgSrc.Clone() as Bitmap)
using (var gImg = Graphics.FromImage(imgCopy)) //shorten var names for this post
{
imgCopy.Save(rec.DstFile, ImageFormat.Jpeg); //Happy here
gImg.SmoothingMode = SmoothingMode.AntiAlias;
imgCopy.Save(rec.DstFile, ImageFormat.Jpeg); //Also no problem
gImg.DrawString(rec.Name, fntArial16, Brushes.Black, new Rectangle(170, 105, 650, 50), sfCenter);
imgCopy.Save(rec.DstFile, ImageFormat.Jpeg); //<-- Fails here
}
編輯:代碼的參數爲:
private static Font fntArial16 = new Font("Arial", 16, FontStyle.Bold);
private static StringFormat _sfCenter;
private static StringFormat sfCenter {
get {
if (_sfCenter == null) {
_sfCenter = new StringFormat();
sfCenter.Alignment = StringAlignment.Center;
sfCenter.LineAlignment = StringAlignment.Center;
}
return _sfCenter;
}
}
原始文件的格式是什麼? – K3N
請注意:平滑不適用於文本。爲文本使用'gimg.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias;'。 – K3N
對不起,這也是一個jpg文件。謝謝,我會改變TextRenderHint。 – Cheval