Return to Snippet

Revision: 65364
at November 25, 2013 03:36 by janusoo


Initial Code
#-------------------------------------------------------------------------------
# Name:        LayerSetsExporter
# Purpose:      export files with each layer set
#
# Author:      JanusHuang
#
# Created:     24/11/2013
# Copyright:   (c) JanusHuang 2013
# Licence:     <your licence>
#-------------------------------------------------------------------------------

import sys
from PyQt4.QtGui import *
import comtypes.client

class LayerSetsExporter(QWidget):

    def __init__(self, parent = None):
        super(LayerSetsExporter, self).__init__(parent)
        self.outputPath = ''
        self.createLayout()
        self.createConnection()

    def setLayerSetsVisible(self, layerSets, state):
        for layerSet in layerSets:
            layerSet.visible = False

    def saveLayerSetsVisible(self, layerSets):
        self.origLayerSetsVisible = []
        for layerSet in layerSets:
            self.origLayerSetsVisible.append([layerSet, layerSet.visible])

    def resetLayerSetsVisible(self):
         for (layerSet, visible) in self.origLayerSetsVisible:
            layerSet.visible = visible

    def getExportFileName(self, layerSet):
        newStr = layerSet.name.replace(self.leLayerPrefix.text(), '')
        return newStr

    def setOutputPath(self):
        self.outputPath = str(QFileDialog.getExistingDirectory(self, "Select Directory")) + '\\'
        self.leOutputPath.setText(self.outputPath)

    def processRun(self):
        app = comtypes.client.CreateObject('Photoshop.Application')
        doc = app.activeDocument
        if self.leOutputPath.text() == '':
            self.outputPath = doc.path
            self.leOutputPath.setText(self.outputPath)

        optionJpg = comtypes.client.CreateObject('Photoshop.JPEGSaveOptions')
        optionJpg.quality = 8

        count = 1
        layerSets = doc.layerSets
        #self.pbProcessing.setMaximum(layerSets.length)
        self.saveLayerSetsVisible(layerSets)
        for layerSet in layerSets:
            if self.leLayerPrefix.text() in layerSet.name:
                self.setLayerSetsVisible(layerSets, False)
                layerSet.visible = True
                doc.saveAs(self.outputPath + self.getExportFileName(layerSet) + '.jpg', optionJpg, True)
                self.pbProcessing.setValue(count)
                count += 1
        self.resetLayerSetsVisible()
        self.pbProcessing.reset()

    def createLayout(self):
        lblLayerPrefix = QLabel('Layer Prefix :')
        self.leLayerPrefix = QLineEdit('ept_')
        layoutH1 = QHBoxLayout()
        layoutH1.addWidget(lblLayerPrefix)
        layoutH1.addWidget(self.leLayerPrefix)

        self.leOutputPath = QLineEdit()
        self.tbtnGetPath = QToolButton()
        layoutH2 = QHBoxLayout()
        layoutH2.addWidget(self.leOutputPath)
        layoutH2.addWidget(self.tbtnGetPath)

        layout = QVBoxLayout()
        layout.addLayout(layoutH1)
        layout.addLayout(layoutH2)
        self.btnRun = QPushButton('&Run')
        self.pbProcessing = QProgressBar()
        layout.addWidget(self.btnRun)
        layout.addWidget(self.pbProcessing)

        # setting top widget
        self.resize(200,100)
        self.setWindowTitle('PS LayerSets Exporter')
        self.setLayout(layout)

    def createConnection(self):
        self.btnRun.clicked.connect(self.processRun)
        self.tbtnGetPath.clicked.connect(self.setOutputPath)

qApp = QApplication(sys.argv)

exporter = LayerSetsExporter()
exporter.show()

qApp.exec_()

Initial URL


Initial Description
with layer set prefix option and custom output path

Initial Title
Export JPEG Files With Each LayerSet with option (Photoshop Python With PyQt)

Initial Tags
python

Initial Language
Python