キャラクターの画像 (フラッシュカードのようなもの) をまとめて作成する PowerShell スクリプトに取り組んでいます。
そして、以前に見た問題に直面しています。それは、キャラクターが非常に汚く見えるということです。例えば:
キャラクターが大きいのもいい感じですが、これはサイズが大きいからだと思います。右側のテキストを拡大すると、同様に見栄えがします。しかし、私はテキストがこのサイズであることを望んでいます。
次の 2 つの方法を使用して、テキストをクリーンアップしようとしましたが、効果はありませんでした。
$grph.SmoothingMode.value__ClearTypeGridFit
私が使用した他のアプローチ:
$grph.CompositingQuality = [System.Drawing.Drawing2D.CompositingQuality]::HighQuality
$grph.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic
$grph.SmoothingMode = [System.Drawing.Drawing2D.SmoothingMode]::AntiAlias
これはコードの問題というよりは、cleartype フォントによるアーティファクトだと思いますが、助けを求めています。
完全なスクリプト:
- CSV ファイルの読み取り (LibreOffice のおかげで UTF-8 がサポートされています)
- CSV の各行に対して、イメージを作成します。これは、イメージの作成を行う Foreach ステートメントです。
$リスト | ForEach-オブジェクト { $Name = $_.Name $Out = "$Path\$Name.png" $imgWidth = 270 $imgHeight = 450 $img = New-Object System.Drawing.Bitmap $imgWidth, $imgHeight $fontK = New-Object System.Drawing.Font "メイリオ", 85 $FontAll = New-Object System.Drawing.Font Meiryo, 35 $BrushBG = [System.Drawing.Brushes]::透明 $BrushFG = [System.Drawing.Brushes]::ライム $grph = [System.Drawing.Graphics]::FromImage($img) $grph.CompositingQuality = [System.Drawing.Drawing2D.CompositingQuality]::HighQuality $grph.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic $grph.SmoothingMode = [System.Drawing.Drawing2D.SmoothingMode]::AntiAlias $grph.FillRectangle($BrushBG,0,0,$img.Width,$img.Height) $kanji = $_.kanji $grph.DrawString([String]$kanji, [System.Drawing.Font]$fontK, $BrushFG, [int]0,[int]0) $くん = $_.kunyomi $fontOn = New-Object System.Drawing.Font "メイリオ", 36 $kunWidth = [System.Windows.Forms.TextRenderer]::MeasureText($kun, $fontOn) $kunLeft = $imgWidth - $kunWidth.Width $grph.DrawString([String]$kun, [System.Drawing.Font]$fontOn, $BrushFG, [int]$kunLeft,[int]0) $pKun = $_.pronounceKun $pKunSize = [System.Windows.Forms.TextRenderer]::MeasureText($pKun, $fontOn) $pKunLeft = $imgWidth - $pKunSize.Width $grph.DrawString([String]$pKun, [System.Drawing.Font]$fontOn, $BrushFG, $pKunLeft,$kunWidth.Height) $grph.Dispose() $img.Save($Out) 書き込み出力 $Name、$ony }
画像の表示されていない部分のコードを削除しましたが、本質的に重複したコードです。
ひらがなの「ひ」と「ひ」の輪郭が黒いギザギザにならないようにするにはどうすればよいですか?