VBScriptでテキストを自動で画像化してみる

投稿者: | 2016-01-27

テキストを画像に変換するのにVBScriptでPowerPointを使用

f:id:Fio:20160127185614p:plain
このように、文字をそのまま画像にできないか、ずっと前から考えていた気がします。
パブリック・ドメインの画像を探すのもいいのですが、文字を画像化するだけで、結構インパクトがあると思いましたから。

もちろん、ペイントなどの画像処理用のソフトを立ち上げて作成すればいいわけなんですが、なんとか自動化できないか考えていたんです。

それで、PowerPointってスライドを画像として保存できるし、VBAにも対応しているのでVBScriptから操作できるのではと思い至りまして、いい天気なのに外出もせずにVBScriptをやってました。

VBScriptはWindowsで実行できる簡単なプログラムみたいなもので、テキストファイルの拡張子.txtの部分を.vbsに変えるだけで実行ファイルができてしまいます。
何らかのソフトをインストールすることもなく、Windowsでそのまま実行できるので、制限も多いとは言え、使いでがあります。

今回はVBScriptで次のようなことを行ってます。
1.PowerPointを起動(ということで、今回はPowerPointが必須です)
2.新たなスライドを追加
3.スライドの大きさを指定して背景を黒くする
4.テキストボックスを挿入して文字を入れる
5.文字のフォントや色、大きさなどを指定する
6.スライドを画像として保存

実際にテキストを画像化するVBScriptのサンプル

f:id:Fio:20160127185655p:plain

'使用する定数を指定(VBAなら必要ないのですが)
Const ppLayoutBlank = 12
Const msoTextOrientationHorizontal = 1
Const ppAutoSizeShapeToFitText = 1
Const ppAlignCenter = 2
'色指定用の関数(これもVBAなら必要ないのですが)
Function RGB(red, green, blue)
RGB= CLng(red + (green * 256) + (blue * 65536))
End Function
'PowerPointを操作できるようにするおまじない
Set ppApp = CreateObject("PowerPoint.Application")
ppApp.Visible = True '可視にする
'プレゼンテーションを作ってスライドを追加し、大きさも指定
Set ppPres = ppApp.Presentations.Add
Set ppSlide = ppPres.Slides.Add(1, ppLayoutBlank)
ppPres.PageSetup.SlideWidth = 640
ppPres.PageSetup.SlideHeight  = 320
'テキストボックスを作って文字やフォントを指定
Set ppTB = ppSlide.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, 600, 300)
ppSlide.FollowMasterBackground = False
ppSlide.Background.Fill.ForeColor.RGB = RGB(0, 0, 0)
ppTB.TextFrame.TextRange.Text = "文字を画像に" & vbCrLf & "変換します"
ppTB.TextFrame.AutoSize = ppAutoSizeShapeToFitText
ppTB.TextFrame.TextRange.Font.Name = "MS P明朝"
ppTB.TextFrame.TextRange.Font.NameFarEast = "MS P明朝"   '←日本語フォント指定
ppTB.TextFrame.TextRange.Font.NameAscii = "MS P明朝"
ppTB.TextFrame.TextRange.Font.Bold = True
ppTB.TextFrame.TextRange.Font.Size = 96   '←フォントサイズ指定
ppTB.TextFrame.TextRange.Font.Color = RGB(255,255,255)
ppTB.TextFrame.TextRange.ParagraphFormat.Alignment = ppAlignCenter
ppTB.Left = (ppPres.SlideMaster.Width - ppTB.Width) / 2
ppTB.Top = (ppPres.SlideMaster.Height - ppTB.Height) / 2
'スライドをPNGファイルでエクスポートします
ppSlide.Export "D:\script\PP\test.png","png",640,320

これを.vbsの拡張子で保存して(名前は何でも可)、実行してください。(ただし、PowerPointがインストールされている必要あり)
画像化するためのテキストや、エクスポートするファイル名やフォント名・大きさなどは適宜書き換えてください。

フォントは、サンプルの画像はHGP平成明朝体W9のフォントを使ってますが、上ではMSP明朝にしてます。
ホントはマティス Pro-EBにしたかったんですけどね。(この理由がわかったあなたは通だ)