2

私は System.Drawing を使用して、基本画像と拡大/縮小されたテキストを含む画像をオンザフライで生成しています。私の LOCALHOST 環境ではすべてがきれいですが、サーバー (Server 2008) に公開すると、アンチエイリアスの一部が失われ、画質が粗くなります。

これは、ローカル環境 (Windows 7) からコピーした例と、サーバー (Server 2008) からコピーした例です。

Windows 7:

ここに画像の説明を入力

Windows 2008:

ここに画像の説明を入力

ご覧のとおり、画像は同じサイズで、フォントも同じようにスケーリングされています。Server バージョンには、エッジを滑らかにするアンチエイリアスがないようです。コードの主な部分は次のとおりです。imgSign と grSign は、テキストがスケーリング/描画されるサイズ/背景色が設定された、確立された Image および Graphics オブジェクトです。

'Requested size of test
Dim textSize As SizeF = grSign.MeasureString(textString, font)
Dim intTextWidth As Integer = textSize.Width
Dim intTextHeight As Integer = textSize.Height

'Create image to hold text
Dim img As Drawing.Image = New Bitmap(intTextWidth, intTextHeight)
Dim gr As Graphics = Graphics.FromImage(img)

'Smoothing mode
gr.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
gr.TextRenderingHint = Text.TextRenderingHint.AntiAlias

'Scale Text
Dim sngScaleWidth As Single = imgSign.Width / intTextWidth
If sngScaleWidth > 1 Then sngScaleWidth = 1 'Don't scale down width if it doesn't need to be
Dim sngScaleHeight As Single = imgSign.Height / intTextHeight
grSign.ScaleTransform(sngScaleWidth, sngScaleHeight)

'Draw text
gr.DrawString(textString, font, Brushes.White, 0, 0)

Server 2008 にはない機能で回避しなければならないものはありますか? または、品質を向上させるために設定できるスイッチはありますか? それとも他の場所を探す必要がありますか?

4

1 に答える 1

2

グラフィックスにこの設定を設定してみてください

gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
gr.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;

より良い品質をアーカイブし、使用しているフォントが両方のシステムで同じであることを再確認します。

于 2012-10-30T20:16:26.703 に答える