Tôi cần viết chương trình Python để tải hình ảnh photoshop PSD, có nhiều lớp và nhổ ra các tệp png (một cho mỗi lớp). Bạn có thể làm điều đó bằng Python không? Tôi đã thử PIL, nhưng dường như không có phương pháp nào để truy cập các lớp. Cứu giúp. PS. Việc viết trình tải PSD và trình soạn thảo png của riêng tôi đã cho thấy quá chậm.Lớp PSD Python?
Trả lời
Sử dụng GIMP-Python? http://www.gimp.org/docs/python/index.html
Bạn không cần Photoshop theo cách đó và nó sẽ hoạt động trên mọi nền tảng chạy GIMP và Python. Đó là một sự phụ thuộc lớn, nhưng một sự phụ thuộc miễn phí.
Đối với thực hiện nó trong PIL:
from PIL import Image, ImageSequence
im = Image.open("spam.psd")
layers = [frame.copy() for frame in ImageSequence.Iterator(im)]
Edit: OK, tìm ra giải pháp: https://github.com/jerem/psdparse
này sẽ cho phép bạn trích xuất các lớp từ một file psd với python mà không cần bất kỳ công cụ phi python.
Bạn có thể sử dụng win32com để truy cập Photoshop bằng Python. có thể mã giả cho công việc của bạn:
- tải file PSD
- Thu thập tất cả các lớp và làm cho tất cả các lớp VISIBLE = OFF
- Bật một lớp khác, đánh dấu chúng VISIBLE = ON và xuất khẩu sang 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)
Sử dụng các plugin win32com cho python (có sẵn ở đây: http://python.net/crew/mhammond/win32/) bạn có thể truy cập vào photoshop và dễ dàng đi qua lớp của bạn và xuất khẩu chúng.
Đây là mẫu mã hoạt động trên các lớp trong tài liệu Photoshop hiện đang hoạt động và xuất chúng vào thư mục được xác định trong 'save_location'.
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
Ngoài ra còn có https://code.google.com/p/pypsd/ và https://github.com/kmike/psd-tools Gói Python để đọc tệp PSD.
- 1. Cách tạo tệp PSD lớp từ dòng lệnh?
- 2. xuất tệp psd theo lô thành png
- 3. Chuyển đổi .psd và .ai thành PNG/JPG với imagick
- 4. Làm cách nào để trích xuất văn bản từ tệp PSD?
- 5. Python 2.6: Lớp bên trong lớp học?
- 6. Monkey-patch Lớp Python
- 7. python lớp con
- 8. lớp Decorator bằng Python
- 9. Trích xuất hình ảnh từ PSD để sử dụng trong ứng dụng iOS
- 10. Phân lớp int trong Python
- 11. Thừa kế lớp trong Python
- 12. Phương thức tĩnh lớp Python
- 13. Các lớp tĩnh trong Python
- 14. Khởi tạo biến lớp Python
- 15. Nhắc lại Python trong Lớp
- 16. biến lớp Overriding trong python
- 17. Tạo động các lớp - Python
- 18. Python siêu lớp phản chiếu
- 19. Các lớp vá trong Python
- 20. Làm cách nào để chuyển đổi thiết kế PSD thành Android xml?
- 21. Lưu trữ tệp hình ảnh, tệp psd, tệp ai, flash trong subversion
- 22. tìm thư viện java để làm việc với định dạng PSD
- 23. python truy cập biến siêu lớp trong lớp con
- 24. biến thể hiện lớp python và biến lớp
- 25. Không sử dụng lớp học làm lớp cha trong Python
- 26. Python lớp trang trí mở rộng lớp gây đệ quy
- 27. Gỡ lớp học từ Python 3 trong Python 2
- 28. Các thành viên lớp tĩnh python
- 29. các lớp python tham chiếu với nhau
- 30. Cách tải động một lớp Python
+1 Đối với 'psdparse'! Có vẻ như OP không phải cuộn chức năng của riêng mình :) – rzetterberg
psdparse không hoạt động. Lỗi "Số lượng kênh không được hỗ trợ" ... – Brock123
Chúng tôi đã loại bỏ tất cả các tùy chọn ra khỏi đó, tôi tin. Bạn sẽ phải tự cuộn hoặc sử dụng GIMP-Python. – agf