I also like to leave the user off in a place that makes sense- in this case, the alpha group, since its the one being updated.
The basics of this script:
Checks for an 'alpha' group in the active PSD file. If present, copies it's merged contents to the alpha channel.
############################################################################## # # Photoshop alpha updater # (C) Pete Hanshaw, 2012 # http://peterhanshawart.blogspot.com.au/ # ############################################################################## # # Checks for an 'alpha' group in the active PSD file. If present, copies it's # contents to the alpha channel. # # Requires the Win32 Extensions: # http://python.net/crew/mhammond/win32/ # ############################################################################## #Import required modules from win32com.client.dynamic import Dispatch from stat import * import os from sys import exit import pythoncom #Define the name of the Alpha group here alpha_group = 'alpha' #Begin the script if (__name__ == '__main__'): #COM dispatch for Photoshop try: psApp = Dispatch('Photoshop.Application') except: os.system("color 0c") print "Photoshop dispatch failed" os.system("PAUSE") exit(0) #Get the currently active document try: doc = psApp.activeDocument #Gracefully end if a document is not open except: os.system("color 0c") print "You need to have an active Photoshop Doc to use this script." os.system("PAUSE") exit(0) #Get information about our current doc activeChannels = doc.ActiveChannels layerSets = doc.LayerSets channelRef = doc.Channels #Check if there are any layerSets in the current doc if (len(layerSets) > 0): #Assume there is no alpha alphaExists = False #Check for an alpha channel for channel in channelRef: if channel.name == "Alpha 1": alphaExists = True break if alphaExists == False: #add a blank alpha channel doc.Channels.Add() #save the current setup saved_state = doc.activeHistoryState #Prepare the alpha group for duplication doc.activeChannels = activeChannels doc.activeLayer = (doc.layerSets[alpha_group]) doc.activeLayer.Visible = True doc.activeLayer.Merge() doc.activeLayer.Copy() #Now that we have a merged copy, revert the merging doc.activeHistoryState = saved_state #Now paste the merged alpha source into the alpha channel doc.activeLayer = (doc.artLayers['Background']) doc.activeChannels = [doc.Channels[5]] doc.Paste() #Restore control to the user doc.selection.deselect doc.activeChannels = activeChannels doc.activeLayer = (doc.layerSets[alpha_group]) print "All done!" else: os.system("color 0c") print "Doc has no groups." os.system("PAUSE") exit(0)
No comments:
Post a Comment
Comments?