我正在开发一个 PowerShell 脚本来批量制作字符图像(有点像抽认卡)。
我遇到了一个我以前见过的问题,那就是角色看起来很脏。例如:

大字符看起来不错,但我相信这只是因为它的大小。如果我放大右边的文字,它看起来同样不错。但我希望文本是这个大小。
我使用了以下两种方法来尝试清理文本,但没有效果:
$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 = 新对象 System.Drawing.Bitmap $imgWidth, $imgHeight
$fontK = 新对象 System.Drawing.Font "Meiryo", 85
$FontAll = 新对象 System.Drawing.Font Meiryo, 35
$BrushBG = [System.Drawing.Brushes]::透明
$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 = 新对象 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)
写输出 $Name, $ony
}
我删除了未显示的部分图像的代码,但它本质上是重复的代码。
我怎样才能使平假名ひ和“hi”没有黑色锯齿状轮廓?
