0
我正在使用PowerShell脚本来批量绘制字符(有点像flashcards)的图像。.net绘制文字不带轮廓(具体为平假名)
而我遇到了一个我以前见过的问题,那就是字符看起来很脏。例如:
大字符看起来不错,但我相信这只是因为它的规模。如果我放大右边的文字,它看起来也很好。但我希望文本的大小。
我已经使用了以下两种方法来尝试和清理文本,没有效果:
$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文件(支持UTF-8感谢的LibreOffice)
- 对于CSV每一行,创建图像。这是创建图像的Foreach语句。
$List | ForEach-Object { $Name = $_.Name $Out = "$Path\$Name.png" $imgWidth = 270 $imgHeight = 450 $img = New-Object System.Drawing.Bitmap $imgWidth, $imgHeight $fontK = New-Object System.Drawing.Font "Meiryo", 85 $FontAll = New-Object System.Drawing.Font Meiryo, 35 $BrushBG = [System.Drawing.Brushes]::Transparent $BrushFG = [System.Drawing.Brushes]::Lime $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) $kun = $_.kunyomi $fontOn = New-Object System.Drawing.Font "Meiryo", 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) Write-Output $Name, $ony }
我除去未示出的图像的部分的代码,但它基本上是复制代码。
如何让平假名ひ和“嗨”没有黑色的锯齿轮廓?