Я новичок в питоне, так что полегче со мной! Я пытаюсь применить размытие к каждому изображению .bmp в папке. Я могу заставить работать первую половину кода, поэтому фильтр применяется ко всем фотографиям, но затем я не могу заставить его повторно сохранять каждое изображение. Я хочу сохранить исходные изображения и добавить новые изображения в папку. Вот что у меня есть:
from PIL import Image from PIL import ImageFilter import os, fileinput, sys
##for every item in X folder that ends in X, apply a basic blur to the image##
for entry in os.scandir('/Users/kh'):
if entry.path.endswith('.bmp'):
img = Image.open(entry.path)
img = img.filter(ImageFilter.BoxBlur(2))
img.show()
##and then re-save each of those new images under a new filename##
# Split our original filename into name and extension
(name, extension) = os.path.splitext(filepath)
# Save with "_blur" added to the filename
img.save(name + '_blur' + extension)
# Save the image as a BMP
img.save(name + '.bmp')
Я пробовал кучу других вещей, но этот код самый близкий, который я получил. Большое спасибо за Вашу помощь.
Это ошибка, которую я получаю: ValueError: неизвестное расширение файла. Извините за путаницу - мне не нужно сохранять исходный файл, просто сохраните исходный файл И сохраните новый файл как "originalfile_blur"






Я попробовал ваш код. Я действительно получаю:
NameError: name 'filepath' is not defined
потому что у вас есть filepath, который должен быть entry.path:
(name, extension) = os.path.splitext(entry.path)
Кроме того, ваш код работает, за исключением того, что у вас размыты оба изображения. Последняя строка:
img.save(name + '.bmp')
явно не нужен, он перезаписывает исходные изображения размытыми.
Это сделало это! Большое спасибо за помощь.
О, подождите! Он работает, но продолжает работать бесконечно, поэтому, когда в папку добавляется новый файл file_blur, он находит его, продолжая поиск в каталоге. Я закончил с file_blur_blur и file_blur_blur_blur и т. д. Как мне сказать, чтобы он остановился в этом случае?
Неважно. Только что добавлено: if entry.path.endswith('_blur'): break
Забавная часть, это не случилось со мной. Может быть, это какая-то система или версия, я не уверен. Я использовал python3.6 в Linux. Но вы не должны использовать break, вы должны использовать continue, я думаю. В противном случае вы можете потерять некоторые изображения. Или вы повторяете os.scandir('/Users/kh') более одного раза?
Я использую Python 3.6 на MacOS. Я попробую continue вместо этого. В идеале я хочу перебрать каталог только один раз.
какая операция сохранения не удалась? Первый или второй? Зачем нужно сохранять исходный файл? он уже на диске - верно?