0

キャラクターの画像 (フラッシュカードのようなもの) をまとめて作成する 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
}

画像の表示されていない部分のコードを削除しましたが、本質的に重複したコードです。

ひらがなの「ひ」と「ひ」の輪郭が黒いギザギザにならないようにするにはどうすればよいですか?

4

1 に答える 1

3

私は自分がしなければならないことを見つけました。

を使用して、必要なSystem.Drawing.Text.TextRenderingHint明快さを追加する必要がありました。

他のサンプリング/エイリアシング情報を削除して遊んだところ、少し良いイメージを維持しているように見えました。

品質のコードは次のとおりです。

$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.TextRenderingHint = [System.Drawing.Text.TextRenderingHint]::AntiAlias

出力は次のようになります。

ここに画像の説明を入力

于 2014-02-16T03:29:01.617 に答える