Базовая обработка TIFF с Photoshop с использованием Python - PullRequest
1 голос
/ 10 февраля 2012

Мне нужно написать скрипт, который делает следующее:

# 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 Ответ

3 голосов
/ 14 февраля 2012

После долгих поисков и проб и ошибок, а затем еще большего количества проб и ошибок мне удалось придумать приведенный ниже код.

Надеюсь, что это может помочь кому-то еще.

код

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
...