snipplrCallback({"id":72975,"title":"export-jpeg-files-with-each-layerset-with-option-photoshop-python-with-pyqt","source":"
  1. #-------------------------------------------------------------------------------<\/span><\/div><\/li>
  2. # Name: LayerSetsExporter<\/span><\/div><\/li>
  3. # Purpose: export files with each layer set<\/span><\/div><\/li>
  4. #<\/span><\/div><\/li>
  5. # Author: JanusHuang<\/span><\/div><\/li>
  6. #<\/span><\/div><\/li>
  7. # Created: 24\/11\/2013<\/span><\/div><\/li>
  8. # Copyright: (c) JanusHuang 2013<\/span><\/div><\/li>
  9. # Licence: <your licence><\/span><\/div><\/li>
  10. #-------------------------------------------------------------------------------<\/span><\/div><\/li>
  11.  <\/div><\/li>
  12. import<\/span> sys<\/span><\/div><\/li>
  13. from<\/span> PyQt4.QtGui<\/span> import<\/span> *<\/div><\/li>
  14. import<\/span> comtypes.client<\/span><\/div><\/li>
  15.  <\/div><\/li>
  16. class<\/span> LayerSetsExporter(<\/span>QWidget)<\/span>:<\/div><\/li>
  17.  <\/div><\/li>
  18. def<\/span> __init__<\/span>(<\/span>self<\/span>,<\/span> parent =<\/span> None<\/span>)<\/span>:<\/div><\/li>
  19. super<\/span>(<\/span>LayerSetsExporter,<\/span> self<\/span>)<\/span>.__init__<\/span>(<\/span>parent)<\/span><\/div><\/li>
  20. self<\/span>.outputPath<\/span> =<\/span> ''<\/span><\/div><\/li>
  21. self<\/span>.createLayout<\/span>(<\/span>)<\/span><\/div><\/li>
  22. self<\/span>.createConnection<\/span>(<\/span>)<\/span><\/div><\/li>
  23.  <\/div><\/li>
  24. def<\/span> setLayerSetsVisible(<\/span>self<\/span>,<\/span> layerSets,<\/span> state)<\/span>:<\/div><\/li>
  25. for<\/span> layerSet in<\/span> layerSets:<\/div><\/li>
  26. layerSet.visible<\/span> =<\/span> False<\/span><\/div><\/li>
  27.  <\/div><\/li>
  28. def<\/span> saveLayerSetsVisible(<\/span>self<\/span>,<\/span> layerSets)<\/span>:<\/div><\/li>
  29. self<\/span>.origLayerSetsVisible<\/span> =<\/span> [<\/span>]<\/span><\/div><\/li>
  30. for<\/span> layerSet in<\/span> layerSets:<\/div><\/li>
  31. self<\/span>.origLayerSetsVisible<\/span>.append<\/span>(<\/span>[<\/span>layerSet,<\/span> layerSet.visible<\/span>]<\/span>)<\/span><\/div><\/li>
  32.  <\/div><\/li>
  33. def<\/span> resetLayerSetsVisible(<\/span>self<\/span>)<\/span>:<\/div><\/li>
  34. for<\/span> (<\/span>layerSet,<\/span> visible)<\/span> in<\/span> self<\/span>.origLayerSetsVisible<\/span>:<\/div><\/li>
  35. layerSet.visible<\/span> =<\/span> visible<\/div><\/li>
  36.  <\/div><\/li>
  37. def<\/span> getExportFileName(<\/span>self<\/span>,<\/span> layerSet)<\/span>:<\/div><\/li>
  38. newStr =<\/span> layerSet.name<\/span>.replace<\/span>(<\/span>self<\/span>.leLayerPrefix<\/span>.text<\/span>(<\/span>)<\/span>,<\/span> ''<\/span>)<\/span><\/div><\/li>
  39. return<\/span> newStr<\/div><\/li>
  40.  <\/div><\/li>
  41. def<\/span> setOutputPath(<\/span>self<\/span>)<\/span>:<\/div><\/li>
  42. self<\/span>.outputPath<\/span> =<\/span> str<\/span>(<\/span>QFileDialog.getExistingDirectory<\/span>(<\/span>self<\/span>,<\/span> "Select Directory"<\/span>)<\/span>)<\/span> + '\\\\<\/span>'<\/span><\/div><\/li>
  43. self<\/span>.leOutputPath<\/span>.setText<\/span>(<\/span>self<\/span>.outputPath<\/span>)<\/span><\/div><\/li>
  44.  <\/div><\/li>
  45. def<\/span> processRun(<\/span>self<\/span>)<\/span>:<\/div><\/li>
  46. app =<\/span> comtypes.client<\/span>.CreateObject<\/span>(<\/span>'Photoshop.Application'<\/span>)<\/span><\/div><\/li>
  47. doc =<\/span> app.activeDocument<\/span><\/div><\/li>
  48. if<\/span> self<\/span>.leOutputPath<\/span>.text<\/span>(<\/span>)<\/span> ==<\/span> ''<\/span>:<\/div><\/li>
  49. self<\/span>.outputPath<\/span> =<\/span> doc.path<\/span><\/div><\/li>
  50. self<\/span>.leOutputPath<\/span>.setText<\/span>(<\/span>self<\/span>.outputPath<\/span>)<\/span><\/div><\/li>
  51.  <\/div><\/li>
  52. optionJpg =<\/span> comtypes.client<\/span>.CreateObject<\/span>(<\/span>'Photoshop.JPEGSaveOptions'<\/span>)<\/span><\/div><\/li>
  53. optionJpg.quality<\/span> =<\/span> 8<\/span><\/div><\/li>
  54.  <\/div><\/li>
  55. count =<\/span> 1<\/span><\/div><\/li>
  56. layerSets =<\/span> doc.layerSets<\/span><\/div><\/li>
  57. #self.pbProcessing.setMaximum(layerSets.length)<\/span><\/div><\/li>
  58. self<\/span>.saveLayerSetsVisible<\/span>(<\/span>layerSets)<\/span><\/div><\/li>
  59. for<\/span> layerSet in<\/span> layerSets:<\/div><\/li>
  60. if<\/span> self<\/span>.leLayerPrefix<\/span>.text<\/span>(<\/span>)<\/span> in<\/span> layerSet.name<\/span>:<\/div><\/li>
  61. self<\/span>.setLayerSetsVisible<\/span>(<\/span>layerSets,<\/span> False<\/span>)<\/span><\/div><\/li>
  62. layerSet.visible<\/span> =<\/span> True<\/span><\/div><\/li>
  63. doc.saveAs<\/span>(<\/span>self<\/span>.outputPath<\/span> + self<\/span>.getExportFileName<\/span>(<\/span>layerSet)<\/span> + '.jpg'<\/span>,<\/span> optionJpg,<\/span> True<\/span>)<\/span><\/div><\/li>
  64. self<\/span>.pbProcessing<\/span>.setValue<\/span>(<\/span>count)<\/span><\/div><\/li>
  65. count +=<\/span> 1<\/span><\/div><\/li>
  66. self<\/span>.resetLayerSetsVisible<\/span>(<\/span>)<\/span><\/div><\/li>
  67. self<\/span>.pbProcessing<\/span>.reset<\/span>(<\/span>)<\/span><\/div><\/li>
  68.  <\/div><\/li>
  69. def<\/span> createLayout(<\/span>self<\/span>)<\/span>:<\/div><\/li>
  70. lblLayerPrefix =<\/span> QLabel(<\/span>'Layer Prefix :'<\/span>)<\/span><\/div><\/li>
  71. self<\/span>.leLayerPrefix<\/span> =<\/span> QLineEdit(<\/span>'ept_'<\/span>)<\/span><\/div><\/li>
  72. layoutH1 =<\/span> QHBoxLayout(<\/span>)<\/span><\/div><\/li>
  73. layoutH1.addWidget<\/span>(<\/span>lblLayerPrefix)<\/span><\/div><\/li>
  74. layoutH1.addWidget<\/span>(<\/span>self<\/span>.leLayerPrefix<\/span>)<\/span><\/div><\/li>
  75.  <\/div><\/li>
  76. self<\/span>.leOutputPath<\/span> =<\/span> QLineEdit(<\/span>)<\/span><\/div><\/li>
  77. self<\/span>.tbtnGetPath<\/span> =<\/span> QToolButton(<\/span>)<\/span><\/div><\/li>
  78. layoutH2 =<\/span> QHBoxLayout(<\/span>)<\/span><\/div><\/li>
  79. layoutH2.addWidget<\/span>(<\/span>self<\/span>.leOutputPath<\/span>)<\/span><\/div><\/li>
  80. layoutH2.addWidget<\/span>(<\/span>self<\/span>.tbtnGetPath<\/span>)<\/span><\/div><\/li>
  81.  <\/div><\/li>
  82. layout =<\/span> QVBoxLayout(<\/span>)<\/span><\/div><\/li>
  83. layout.addLayout<\/span>(<\/span>layoutH1)<\/span><\/div><\/li>
  84. layout.addLayout<\/span>(<\/span>layoutH2)<\/span><\/div><\/li>
  85. self<\/span>.btnRun<\/span> =<\/span> QPushButton(<\/span>'&Run'<\/span>)<\/span><\/div><\/li>
  86. self<\/span>.pbProcessing<\/span> =<\/span> QProgressBar(<\/span>)<\/span><\/div><\/li>
  87. layout.addWidget<\/span>(<\/span>self<\/span>.btnRun<\/span>)<\/span><\/div><\/li>
  88. layout.addWidget<\/span>(<\/span>self<\/span>.pbProcessing<\/span>)<\/span><\/div><\/li>
  89.  <\/div><\/li>
  90. # setting top widget<\/span><\/div><\/li>
  91. self<\/span>.resize<\/span>(<\/span>200<\/span>,<\/span>100<\/span>)<\/span><\/div><\/li>
  92. self<\/span>.setWindowTitle<\/span>(<\/span>'PS LayerSets Exporter'<\/span>)<\/span><\/div><\/li>
  93. self<\/span>.setLayout<\/span>(<\/span>layout)<\/span><\/div><\/li>
  94.  <\/div><\/li>
  95. def<\/span> createConnection(<\/span>self<\/span>)<\/span>:<\/div><\/li>
  96. self<\/span>.btnRun<\/span>.clicked<\/span>.connect<\/span>(<\/span>self<\/span>.processRun<\/span>)<\/span><\/div><\/li>
  97. self<\/span>.tbtnGetPath<\/span>.clicked<\/span>.connect<\/span>(<\/span>self<\/span>.setOutputPath<\/span>)<\/span><\/div><\/li>
  98.  <\/div><\/li>
  99. qApp =<\/span> QApplication(<\/span>sys<\/span>.argv<\/span>)<\/span><\/div><\/li>
  100.  <\/div><\/li>
  101. exporter =<\/span> LayerSetsExporter(<\/span>)<\/span><\/div><\/li>
  102. exporter.show<\/span>(<\/span>)<\/span><\/div><\/li>
  103.  <\/div><\/li>
  104. qApp.exec_<\/span>(<\/span>)<\/span><\/div><\/li><\/ol><\/pre>","link":"https:\/\/snipplr.com\/view\/72975\/export-jpeg-files-with-each-layerset-with-option-photoshop-python-with-pyqt"});