2012-02-10 13 views
1

を使用してフォトショップでTIFF処理:基本のpython

# open a tiff 
# get it's dpi, width, height and colorspace 
# set the dpi, width, height and colorspace 
# and then save the tiff out with no compression and no layers. 

これまでのところ、私が得ている:

from win32com.client.dynamic import Dispatch 
ps = Dispatch("Photoshop.Application") 

file_path = "C:\\Users\\me\\myImg.tif" 
doc = ps.Open(file_path) 

dpi  = doc.Resolution 
width = doc.Width    # in cm 
height = doc.Height   # in cm 

# up to here the code works, but then I try 
doc.Resolution = 72 
ps.ResizeImage(120 , 120) 
ps.PsColorSpaceType(3) # psSRGB 

ps.TiffSaveOptions.ImageCompression = 1 # psNoTIFFCompression 
ps.TiffSaveOptions.Layers = False 
ps.Save() 

# and this last section fails 

助けてください、任意のアイデア、ヒント、魂は非常に高く評価されます:D

+1

あなたはどこに '爆弾' 出力を提供することはできますか?それが何を意味するのか誰も知りません。好奇心のために、あなたはPILを使用することができますか、またはPhotoshopに縛られていますか? – jdi

+0

爆弾は失敗/エラーを意味する、申し訳ありません。私はPILを試してきましたが、それはtiffを正しく読むことさえできません。いくつかのフォーラムでは、画像処理モジュール/ライブラリなどのバリエーションを試してみることをおすすめしますが、100%成功したようなものはありません。しかし、Photoshopではさまざまな種類のTiffを開くことができ、スタジオには予備のPhotoshopライセンスがあるので、Photoshopを使用することにしました。私もImageMagikを試しましたが、それはどちらかのtiffでも動作しません。 – Jared

+0

出力が失敗した場合の出力に関しては、実際の正しいコマンドよりもスクリプトに実行させたいコメントの後のコマンド "#ここまでのコードは動作しますが、それから私は を試してください"という例があります。それらは私が達成しようとしていることを示すためにまとめたものです。私は以前にpythonを使ってPhotoshopで作業していませんでしたので、ここで何をすべきか分かりません。私の質問を読む時間をとってくれてありがとう:) – Jared

答えて

2

多くのgoogelingといくつかの試行錯誤の後、さらに試行錯誤して、私は以下のコードを思いついた。

これは他の人に役立つことを期待しています。

コード

file_path = "C:\\Users\\me\\myImg.tif" 
color_settings = "North America General Purpose 2" 


from win32com.client.dynamic import Dispatch 

ps_app = Dispatch("Photoshop.Application") 

# set photoshop to use pixels as dimensions 
ps_app.Preferences.RulerUnits = 1    # 'for PsUnits --> 1 (psPixels)   
ps_app.Preferences.TypeUnits = 1    # 'for PsTypeUnits --> 1 (psPixels) 

doc = ps_app.Open(file_path)     # Open a file and store open file as doc 
dpi  = doc.Resolution 
width = doc.Width   
height = doc.Height    

cor_res = 1024 

ps_app.ChangeColorSettings(color_settings) 
doc.ResizeImage(cor_res , cor_res , 72) 


options = Dispatch('Photoshop.TiffSaveOptions') 
options.ImageCompression = 1     # ps_appNoTIFFCompression 
options.Layers = False       # no layers 


doc.SaveAs(file_path , options)    # Save with specified options 
doc.Close(2)         # psDoNotSaveChanges