2017’nin 7. ayında yazmışım fakat İngilizce yazmışım neden öyle yaptım hatırlamıyorum.
Yüklenmesi gereken modüller
- psd-tools
- Pillow
- packbits
Örnek kullanım
python psd2imgs.py sample.psd png test
Kaynak kod
#-*- coding: utf-8 -*-
# Name: Adobe File Converter
# Release: 07.01.2017
# PSD -> png jpg gif bmp ico ppm pgm pbm tiff
import Tkinter as tk
import Tkconstants, tkFileDialog
import os,sys
from psd_tools import PSDImage
class PSD2Imgs:
def __init__(self):
self.window() #Init components
def window(self):
# Top Window Prop
wndSpecs = {
"title" : "PSD2Imgs",
"width" : 500,
"height" : 300,
"resizable" : False,
"centerOfDesktop" : True
}
if wndSpecs['resizable'] == False:
wnd.resizable(width=tk.FALSE,height=tk.FALSE)
wnd.title(wndSpecs['title'])
if wndSpecs['centerOfDesktop']:
wnd.geometry("%sx%s+%s+%s"%(wndSpecs['width'],wndSpecs['height'],((wnd.winfo_screenwidth() - wndSpecs['width']) / 2),((wnd.winfo_screenheight() - wndSpecs['height']) / 2)))
else:
wnd.geometry("%sx%s"%(wndSpecs['width'],wndSpecs['height']))
# Components
self.openFileBtn = tk.Button(text="Open Photoshop PSD File", command=self.act_openFileBtn, font=('Helvetica', 15))
self.openFileBtn.place(relx="0.25")
InfoLbl = tk.Label(text="Info",font=('Helvetica', 20))
InfoLbl.place(relx="0.0",rely="0.11")
def act_openFileBtn(self):
# define options for opening a file
self.fileOpenOptions = {}
self.fileOpenOptions['defaultextension'] = '.psd'
self.fileOpenOptions['filetypes'] = [('Adobe Photoshop', '.psd')]
self.fileOpenOptions['initialdir'] = os.getcwd()
self.fileOpenOptions['initialfile'] = 'sample.psd'
#self.fileOpenOptions['parent'] = root
self.fileOpenOptions['title'] = 'Select your want convert file'
# define options for saving a file
self.fileSavenOptions = {}
self.fileSavenOptions['defaultextension'] = '.png'
self.fileSavenOptions['initialdir'] = os.getcwd()
self.fileSavenOptions['initialfile'] = 'sample.png'
self.fileSavenOptions['filetypes'] = [('Portable Network Graphics', '.png'),('Joint Photographic Experts Group', '.jpg'),('Graphics Interchange Format', '.gif'),('Windows Bitmap', '.bmp'),('Microsoft ICO File', '.ico'),('Portable PixMap', '.ppm'),('Portable GreyMap', '.pgm'),('Portable BitMap', '.pbm'),('Tagged Image File Format', '.tiff')]
self.fileSavenOptions['title'] = 'Save your exported file'
# defining options for opening a directory
self.dirOptions = {}
self.dirOptions['initialdir'] = os.getcwd()
self.dirOptions['mustexist'] = False
self.dirOptions['title'] = 'Select your want convert file'
self.openedFile = tkFileDialog.askopenfilename(**self.fileOpenOptions)
self.fileExt = fileExt = self.openedFile.split(".")[-1].lower()
# Photoshop PSD File Select
if fileExt == "psd":
self.opened_psdFile = opn_psdFile = PSDImage.load(self.openedFile)
self.FileTypeLbl = tk.Label(text="File Type: Photoshop",font=('Helvetica', 22))
self.FileTypeLbl.place(relx="0.0",rely="0.22")
self.FileDimensionLbl = tk.Label(text="File Dimension: %sx%s"%(opn_psdFile.header.width,opn_psdFile.header.height),font=('Helvetica', 22))
self.FileDimensionLbl.place(relx="0.0",rely="0.33")
self.ColorModeLbl = tk.Label(text="Color Mode: %s"%str(opn_psdFile.header.color_mode),font=('Helvetica', 22))
self.ColorModeLbl.place(relx="0.0",rely="0.44")
self.TotalLayersLbl = tk.Label(text="Total Layers: %s"%len(opn_psdFile.layers),font=('Helvetica', 22))
self.TotalLayersLbl.place(relx="0.0",rely="0.55")
self.saveFileBtn = tk.Button(text="Save File", command=self.act_exportFile,font=('Helvetica', 22))
self.saveFileBtn.place(relx="0.0",rely="0.70")
def act_exportFile(self):
if self.fileExt == "psd":
export2File = tkFileDialog.asksaveasfilename(**self.fileSavenOptions)
#print export2File //full path
exp2file = self.opened_psdFile.as_PIL()
exp2file.save(export2File)
num_args = len(sys.argv)
if num_args == 1:
wnd = tk.Tk()
vx2i = PSD2Imgs()
wnd.mainloop()
else:
print "PSD2Imgs v0.1 - @fatihmert\n"
print "How to use psd2imgs\npsd2imgs.exe <psd_file_name.psd> <to_file_type> <save_name>\npsd2imgs.exe sample.psd png test"
supportedFiles = ["png","jpg","gif","ico","bmp","ppm","pgm","pbm","tiff"]
va_list = sys.argv
if va_list[1].split(".")[-1].lower() == "psd":
if va_list[2] in supportedFiles:
opn_psdFile = PSDImage.load(va_list[1])
print "\nFile Dimension: %sx%s"%(opn_psdFile.header.width,opn_psdFile.header.height)
print "Color Mode: %s"%str(opn_psdFile.header.color_mode)
print "Total Layers: %s"%len(opn_psdFile.layers)
newFileFullName = "%s.%s"%(va_list[3],va_list[2])
exp2file = opn_psdFile.as_PIL()
exp2file.save(newFileFullName)
print "%s file converted succesfuly to %s file."%(va_list[1],newFileFullName)
else:
print "This application convertable support files: png jpg gif ico bmp ppm pgm pbm tiff"
else:
print "This application just PSD convert."