Necesito escribir un programa de Python para cargar una imagen de PSD Photoshop, que tiene varias capas y escupir archivos png (uno para cada capa). ¿Puedes hacer eso en Python? He intentado con PIL, pero no parece haber ningún método para acceder a las capas. Ayuda. PS. Escribir mi propio cargador PSD y el escritor png ha demostrado ser demasiado lento.Capas Python PSD?
Respuesta
Usar Gimp-Python? http://www.gimp.org/docs/python/index.html
No necesita Photoshop de esa manera, y debería funcionar en cualquier plataforma que ejecute Gimp y Python. Es una gran dependencia, pero gratuita.
Para hacerlo en PIL:
from PIL import Image, ImageSequence
im = Image.open("spam.psd")
layers = [frame.copy() for frame in ImageSequence.Iterator(im)]
Editar: OK, encontrado la solución: https://github.com/jerem/psdparse
Esto le permitirá extraer capas de un archivo PSD con el pitón sin ningún tipo de material no pitón.
Puede usar el win32com para acceder al Photoshop con Python. Posible pseudo código para su trabajo:
- carga el archivo PSD
- Recoge todas las capas y crea todas las capas visibles = OFF
- Encienda una capa tras otra, marcarlos VISIBLE = ON y exportación a PNG
import win32com.client pApp = win32com.client.Dispatch('Photoshop.Application') def makeAllLayerInvisible(lyrs): for ly in lyrs: ly.Visible = False def makeEachLayerVisibleAndExportToPNG(lyrs): for ly in lyrs: ly.Visible = True options = win32com.client.Dispatch('Photoshop.PNGSaveOptions') options.Interlaced = False tf = 'PNG file name with path' doc.SaveAs(SaveIn=tf,Options=options) ly.Visible = False #pApp.Open(PSD file) doc = pApp.ActiveDocument makeAllLayerInvisible(doc.Layers) makeEachLayerVisibleAndExportToPNG(doc.Layers)
Usando el plugin win32com para Python (disponible aquí: http://python.net/crew/mhammond/win32/) puede acceder a photoshop y pasar fácilmente a través de sus capas y exportarlos.
Aquí hay un ejemplo de código que funciona en las capas dentro del documento de Photoshop actualmente activo, y las exporta a la carpeta definida en 'ubicación_de_guarda'.
from win32com.client.dynamic import Dispatch
#Save location
save_location = 'c:\\temp\\'
#call photoshop
psApp = Dispatch('Photoshop.Application')
options = Dispatch('Photoshop.ExportOptionsSaveForWeb')
options.Format = 13 # PNG
options.PNG8 = False # Sets it to PNG-24 bit
doc = psApp.activeDocument
#Hide the layers so that they don't get in the way when exporting
for layer in doc.layers:
layer.Visible = False
#Now go through one at a time and export each layer
for layer in doc.layers:
#build the filename
savefile = save_location + layer.name + '.png'
print 'Exporting', savefile
#Set the current layer to be visible
layer.visible = True
#Export the layer
doc.Export(ExportIn=savefile, ExportAs=2, Options=options)
#Set the layer to be invisible to make way for the next one
layer.visible = False
También hay https://code.google.com/p/pypsd/ y https://github.com/kmike/psd-tools paquetes de Python para la lectura de archivos PSD.
- 1. Edición de capas de texto PSD de Photoshop programáticamente
- 2. ¿Cómo puedo obtener las capas de un archivo PSD?
- 3. ¿Cómo crear un archivo PSD en capas desde la línea de comandos?
- 4. ¿Qué herramientas hay para cortar un PSD?
- 5. ¿Cómo extraer texto de un archivo PSD?
- 6. convertir PSD a la página web
- 7. exportación por lotes archivos psd a png
- 8. ¿Convertir formato PSD a Android XML (formato)?
- 9. ¿Cómo extraer capas de un archivo de Photoshop? C#
- 10. arquitectura de 3 capas: paso de datos entre capas
- 11. Repositorio git "Capas"
- 12. ¿Cuántas capas son demasiadas?
- 13. de varias capas ExpandableListView
- 14. Cómo crear vistas en capas
- 15. Capas de diseño? ¿Eje Z?
- 16. Android crear capas en lienzo
- 17. UIDatePicker en UIActionSheet capas problema
- 18. Copia de modelos entre capas
- 19. Interfaces en diferentes capas lógicas
- 20. Extraer imágenes de PSD para su uso en la aplicación de iOS
- 21. ¿Cómo convierto un diseño de PSD a Android xml?
- 22. diseño web PSD a html -> formas más directas?
- 23. Convierta .psd y .ai a PNG/JPG con imagick
- 24. ¿Cuáles son las capas de abstracción de bases de datos viables para Python?
- 25. proveedor de servicio por capas en C#
- 26. OpenLayers, capas: baldosa vs solo azulejo
- 27. SurfaceViews en capas en FrameLayout en Android
- 28. OpenGL estéreo en ventana de capas
- 29. Cocos2d manejo táctil con varias capas
- 30. capas de superposición de mapas de google
+1 Para 'psdparse'! Parece que OP no tiene que rodar su propia funcionalidad :) – rzetterberg
psdparse no funciona. Error "No admitido número de canales" ... – Brock123
Hemos agotado todas las opciones que hay, creo. Tendrás que hacer tu propio, o usar Gimp-Python. – agf