2009-03-31 8 views
7

私は多言語のウェブサイトを持っており、CSVソースからpsdファイルのテキストレイヤーを更新するプロセスを自動化する必要があります。Photoshopを自動化してファイルからテキストを挿入します

私は、幅が変更されているためにPSPに不具合があるかもしれないが、とにかくドキュメント内にテキストを入れることが多くなると分かっています。

私のオプションは何ですか?

編集:

Murmelschlurmelには有効な解決策があります。ここに、Adobeのドキュメントへのリンクがあります。

http://livedocs.adobe.com/en_US/Photoshop/10.0/help.html?content=WSfd1234e1c4b69f30ea53e41001031ab64-740d.html

CSVファイルのフォーマットはとても素敵ではありません:あなたは、各変数の列が必要です。私は各変数の行を期待します。

これは、ウムラウト(ä、öなど)

EDIT 1で動作します:別の解決策は、Photoshopのを自動化するために、COMを使用することです

。変更されたテキストが必要なテンプレート(ボタン)が2つある場合はうれしいことです。ここで私はあなたのスタートセットを得るかもしれないPythonのスクリプトです。

TemplateFileName、TargetFileName、TargetFormat、Text (つまりtemplate.psd、button1、gif、NiceButton)の列を持つExcelファイルが必要です。 シートの最初の行は使用されません。 pspテンプレートは1つのテキストレイヤーしか持たず、レイヤーグループを持つことはできません。

import win32com.client 
import xlrd 
spreadsheet = xlrd.open_workbook("text_buttons.xls") 
sheet = spreadsheet.sheet_by_index(0) 

psApp = win32com.client.Dispatch("Photoshop.Application") 
jpgSaveOptions = win32com.client.Dispatch("Photoshop.JPEGSaveOptions") 
jpgSaveOptions.EmbedColorProfile = True 
jpgSaveOptions.FormatOptions = 1 
jpgSaveOptions.Matte = 1 
jpgSaveOptions.Quality = 1 

gifSaveOptions = win32com.client.Dispatch("Photoshop.GIFSaveOptions") 



for rowIndex in range(sheet.nrows): 
    if(rowIndex > 0): 
     template = sheet.row(rowIndex)[0].value 
     targetFile = sheet.row(rowIndex)[1].value 
     targetFileFormat = sheet.row(rowIndex)[2].value 
     textTranslated = sheet.row(rowIndex)[3].value 
     psApp.Open(r"D:\Design\Produktion\%s" % template) 
     doc = psApp.Application.ActiveDocument 

     for layer in doc.Layers: 
      if (layer.Kind == 2): 
       layer.TextItem.Contents = textTranslated 
       if(targetFileFormat == "gif"): 
        doc.SaveAs(r"D:\Design\Produktion\de\%s" % targetFile, gifSaveOptions, True, 2) 
       if(targetFileFormat == "jpg"): 
        doc.SaveAs(r"D:\Design\Produktion\de\%s" % targetFile, jpgSaveOptions, True, 2) 

答えて

21

あなたがこれを行うには、「データ駆動設計」を使用することができます。コンピュータサイエンスにはdata driven designのコンセプトもありますが、これはPhotoshopの言葉の使用には関係していません。ここで

は続行する方法です:

をPhotoshopであなたのイメージをロードし、画像を使用して変数を定義>変数>を定義します。

次に、csvをPhotoshopが読み取れる形式に変換します。 タブで区切られたテキストの経験がありました。

最後にPhotoshopでテキストファイルをイメージ>変数>データセットと読み込み、Photoshopですべての繰り返しを保存させます。

私が最初に試したとき、Photoshopのヘルプファイルが十分な詳細を提供していないことがわかりました。私はフォトショップ "データセット"のインターネットを検索し、いくつかの良いチュートリアルを見つけました。これはdigitaltutorsからです。

+1

この動画は役に立ちました: http://www.youtube.com/watch?v=i9Ms34nYRFI –

+1

データ駆動型のチュートリアル:http://roderickvella.wordpress.com/2014/12/30/photoshop-data -driven-graphics / – Vince

1

それはあまりにも少しオフになる場合もありますが、私は正確に同じ問題を処理するには、Adobe AlterCast/Grphicsサーバーを使用していました。

また、テキストGIF/JPGイメージの場合、Python + PIL(Python Imaging Library)を使用することもできます。ここ は、(インストールのArialと大阪のフォントを使用してWindows OS上で動作します。)サンプル・コードである

#!/usr/bin/python 
# -*- coding: utf-8 -*- 
import ImageFont, ImageDraw, Image 
#font = ImageFont.truetype("/usr/share/fonts/bitstream-vera/Vera.ttf", 24) 
#font = ImageFont.truetype("futuratm.ttf", 18) 
font = ImageFont.truetype("arial.ttf", 18) 
im = Image.new("RGB", (365,20), "#fff") 
draw = ImageDraw.Draw(im) 
draw.text((0, 0), "Test Images", font=font, fill="#000") 
im.save("TestImg_EN.gif", "GIF") 


font = ImageFont.truetype("osaka.ttf", 18) 
im = Image.new("RGB", (365,20), "#fff") 
draw = ImageDraw.Draw(im) 
draw.text((0, 0), u"テストイメージ", font=font, fill="#000") 
im.save("TestImg_JP.gif", "GIF") 
+0

これは完璧な解決策のように聞こえました。しかし、この製品は中止されています。 (姓はAdobe Graphics Server - http://www.adobe.com/jp/products/server/graphics/です)。私がPSP特有のefectsを見つけたので、画像処理は実現できません。 –

関連する問題