#python #tiff
Вопрос:
Я работаю над проектом, и моя первая задача-преобразовать некоторые файлы tiff в jpeg. Я работаю со сценарием, который я использовал ранее, и он работал, поэтому я изменил путь, чтобы исправить мой текущий проект. я хочу конвертировать эти файлы, а затем сохранить их в том же месте. мой скрипт запустится, и я добавил печать, чтобы убедиться, что программа может правильно обращаться к файлам, но если я добавлю печать в цикл после im.save (), я просто ничего не получу, так что здесь что-то не так, но я не могу понять, что я делаю неправильно.
#!/usr/bin/env python3
import os
import sys
from PIL import Image
cwd = os.getcwd()
path = cwd '/supplier-data/images/'
for files in os.listdir(path):
print(files)
if not files.startswith('.') and not files.startswith('README')and not files.startswith('LICENSE'):
with Image.open(path files) as im:
im=im.convert('RGB').resize((600, 400))
im=im.save(path files, 'jpeg', quality=100)
print(im)
Комментарии:
1.
None
это совершенно нормальное возвращаемое значение для операций, которым не нужно ничего возвращать. Еслиsave()
не задокументировано, что что-то возвращается (и я не понимаю, почему это должно быть), эта печать, возвращающая ничего, предположительно ведет себя так, как ожидалось.2. Глупый вопрос: Вы пробовали изменить имя файла, чтобы оно имело новое расширение, прежде чем сказать PIL сохранить его в этот файл?
3. Почему вы переназначаетесь
im
после каждой операции (т. е.im = im.foo(...)
)? Это приведет к уничтожению ссылки на вашImage
объект.4. чарльз — я думал, что при печати im подтвердит, что новый файл был преобразован, и даст мне подтверждение при запуске программы. Сценарий, который я использую, был взят из предыдущего упражнения, которое мы выполняли при преобразовании из tiff в jpeg, так как нам нужно изменить размер и формат
5. Сельчук, я не уверен, что понимаю, в чем проблема. я хотел обратить, а потом хочу спасти. Я не разрушаю ничего из того, что мне известно
Ответ №1:
таким образом, мой сценарий действительно работал, но он преобразовал файлы и заменил их файлом с тем же именем, заканчивающимся на .tiff, хотя они были преобразованы в jpeg. я исправил сценарий с предложениями других здесь и сейчас, выполняет преобразования и сохраняет под тем же именем, но я добавил «.jpeg» в .save (), поэтому вместо замены старого файла он создал 2-е изображение файла и сохраняет в том же каталоге, как указано в первой части окончательного проекта. я больше не перезаписываю im и не использую im2 и im3 в сценарии. Я также использовал bash для проверки исходного и нового файла изображения.
вот пример того, как я сделал это в bash, используя исходное изображение, которое, как я предполагал, было файлом tiff:
file -s 001
это то, что отображается:
001: Данные изображения в формате TIFF, малый размер, direntri = 11, высота=192, бит / с=8, сжатие=отсутствует, фотометрическая интерпретация=ноль, ширина=192
а вот и обновленная версия скрипта:
#!/usr/bin/env python3
import os
import sys
from PIL import Image
cwd = os.getcwd()
path = cwd '/supplier-data/images/'
for files in os.listdir(path):
print(files)
if not files.startswith('.') and not files.startswith('README')and not files.startswith('LICENSE'):
with Image.open(path files) as im:
im2=im.convert('RGB').resize((600, 400))
im3=im2.save(path files ".jpg", 'jpeg', quality=100)