Итак, я создал функцию в своей программе, которая позволяет пользователю сохранять все, что он или она рисует на холсте Черепахи, как файл Postscript со своим именем. Тем не менее, были проблемы с некоторыми цветами, не появляющимися на выходе, в зависимости от характера файлов Postscript, а также файлы Postscript просто не будут открываться на некоторых других платформах. Поэтому я решил сохранить файл postscript в виде изображения JPEG, так как файл JPEG должен быть открыт на многих платформах, можно надеяться отобразить все цвета холста, и он должен иметь более высокое разрешение, чем файл postscript. Таким образом, чтобы сделать это, я попытался, используя PIL, следующий в моем сохранить функции:Как преобразовать файл постскриптума pton tkinter в файл изображения, читаемый PIL?
def savefirst():
cnv = getscreen().getcanvas()
global hen
fev = cnv.postscript(file = 'InitialFile.ps', colormode = 'color')
hen = filedialog.asksaveasfilename(defaultextension = '.jpg')
im = Image.open(fev)
print(im)
im.save(hen + '.jpg')
Однако всякий раз, когда я запускаю это, я получаю эту ошибку:
line 2391, in savefirst
im = Image.open(fev)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PIL/Image.py", line 2263, in open
fp = io.BytesIO(fp.read())
AttributeError: 'str' object has no attribute 'read'
Видимо это не может прочитайте файл postscript, так как это не, в соответствии с тем, что я знаю, изображение в нем, поэтому оно должно быть сначала преобразовано в изображение, затем прочитано как изображение, а затем, наконец, преобразовано и сохранено в виде файла JPEG. Вопрос в том, как я смогу сперва преобразовать файл postscript в файл изображения ВНУТРИ программа, возможно, используя библиотеку изображений Python? Оглядываясь вокруг, и Google не помог, так что любая помощь от пользователей SO очень ценится!
EDIT: После unubuntu's
совет, я теперь это для моего спасения функции:
def savefirst():
cnv = getscreen().getcanvas()
global hen
ps = cnv.postscript(colormode = 'color')
hen = filedialog.asksaveasfilename(defaultextension = '.jpg')
im = Image.open(io.BytesIO(ps.encode('utf-8')))
im.save(hen + '.jpg')
Однако, теперь, когда я бегу, я получаю эту ошибку:
line 2395, in savefirst
im.save(hen + '.jpg')
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PIL/Image.py", line 1646, in save
self.load()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PIL/EpsImagePlugin.py", line 337, in load
self.im = Ghostscript(self.tile, self.size, self.fp, scale)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/PIL/EpsImagePlugin.py", line 143, in Ghostscript
stdout=subprocess.PIPE)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 950, in __init__
restore_signals, start_new_session)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py", line 1544, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'gs'
Что такое 'gs'
и почему я получаю эту ошибку сейчас?
Я попробовал первую часть, и я получаю ошибку 'FileNotFoundError: [Errno 2] Нет такого файла или каталога:«Gs «Это« Ghostscript »правильно? Если да, то как мне это получить? –
Кроме того, мой os - это «Macintosh», и у меня есть «Python 3.5.1». Как мне получить Ghostscript в моей системе, потому что я не могу финансировать один из них. –
Извините, у меня нет опыта установки ghostscript на Mac. – unutbu