Powershell将希伯来语文本插入图像

Posted

技术标签:

【中文标题】Powershell将希伯来语文本插入图像【英文标题】:Powershell insert text in Hebrew to an image 【发布时间】:2021-12-29 18:14:39 【问题描述】:

我正在尝试做一个签名制作者,我想用希伯来语写名字和工作,但它像英语一样从左边开始。有没有办法让文字从右边开始?

这是我的代码示例:

Add-Type -AssemblyName System.Drawing
$uname='סער'#Read-Host "insert name:"
$job='יינחןינצל'#Read-Host "insert job:"
$filename = "$home\desktop\sign.png" 
$bmp = new-object System.Drawing.Bitmap 600,200

#Get the image
#$source=Get-Item 
#$img = [System.Drawing.Image]::FromFile($_.FullName)
#Create a bitmap
#$bmp = new-object System.Drawing.Bitmap([int]($img.width)),([int]($img.height))

$font = new-object System.Drawing.Font Consolas,18
$brushBg = [System.Drawing.Brushes]::White 
$brushFg = [System.Drawing.Brushes]::Black 
$graphics = [System.Drawing.Graphics]::FromImage($bmp) 
$graphics.FillRectangle($brushBg,0,0,$bmp.Width,$bmp.Height) 
$graphics.DrawString($uname,$font,$brushFg,10,10)
$graphics.DrawString($job,$font,$brushFg,90,100)
$graphics.Dispose() 
$bmp.Save($filename) 

Invoke-Item $filename

【问题讨论】:

看看包含StringFormat的重载方法。有了它,您可以将 FormatFlags 值设置为 DirectionRightToLeft (1) 【参考方案1】:

正如所评论的,DrawString() 方法有一个 constructor,您可以使用它给它一个 StringFormat 对象,您可以在其中设置 RightToLeft 文本方向。

在您的代码中尝试:

$rtlFormat = [System.Drawing.StringFormat]::new([System.Drawing.StringFormatFlags]::DirectionRightToLeft)
$graphics.DrawString($uname, $font, $brushFg, [System.Drawing.PointF]::new(10,10), $rtlFormat)
$graphics.DrawString($job, $font, $brushFg, [System.Drawing.PointF]::new(90,100), $rtlFormat)

如果您使用的 PowerShell 版本对于 [type]::new() 语法来说太旧,请使用

$rtlFormat = New-Object -TypeName System.Drawing.StringFormat('DirectionRightToLeft')
$graphics.DrawString($uname, $font, $brushFg, (New-Object -TypeName System.Drawing.PointF(10,10)), $rtlFormat)
$graphics.DrawString($job, $font, $brushFg, (New-Object -TypeName System.Drawing.PointF(90,100)), $rtlFormat)

【讨论】:

【参考方案2】:
$sf = [System.Drawing.StringFormat]::New()
$sf.Alignment = 'far'
$sf.LineAlignment = 'far'
$graphics.FillRectangle($brushBg,0,0,$bmp.Width,$bmp.Height) 
$graphics.DrawString($uname,$font,$brushFg,500,100,$sf)
$graphics.DrawString($job,$font,$brushFg,500,200,$sf)

这就是我最后所做的 塔克斯西奥

【讨论】:

以上是关于Powershell将希伯来语文本插入图像的主要内容,如果未能解决你的问题,请参考以下文章

将希伯来语字符插入 MySQL 表时获取问号

如何将希伯来语值插入 php 中的 mysql 数据库

如何从 C# ASP.NET 参数将希伯来语文本发送到 SQL Server?

在屏幕上显示希伯来语文本

使用希伯来语输入进行文本框验证

Unicode / UTF-8文本文件:Windows控制台上的乱码(试图显示希伯来语)