У меня есть метод сохранения, который выглядит следующим образом:
def save(self, *args, **kwargs):
super(Profile, self).save(*args, **kwargs)
if self.avatar:
image = Image.open(self.avatar)
image_path = self.avatar.path
image_name = self.avatar.path[:-4]
image_ext = self.avatar.path[-4:]
resize_images(image, image_path, image_name, image_ext)
image.close()
Когда я запускаю метод сохранения один раз, он работает. Тем не менее, когда я запускаю его снова, я получаю сообщение об ошибке: PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: xxxx
У меня есть метод перезаписи, который будет go очищать каталог и затем сохранять новое изображение. Однако, поскольку предыдущее изображение еще не закрылось и все еще находится в «использовании», оно выдает эту ошибку. Когда я удаляю метод resize_images
, все работает, и я не получаю ошибку. Вот как resize_images
выглядит следующим образом:
def resize_images(image, image_path, image_name, image_ext):
image = image.resize((400, 400), Image.ANTIALIAS)
image.save(image_path, optimize=True, quality=95)
medium_image = image.resize((250, 250), Image.ANTIALIAS)
image.close()
medium_path = image_name + "_medium" + image_ext
medium_image.save(medium_path, optimize=True, quality=95)
small_image = medium_image.resize((100, 100), Image.ANTIALIAS)
small_path = image_name + "_small" + image_ext
small_image.save(small_path, optimize=True, quality=95)
medium_image.close()
mini_image = small_image.resize((50, 50), Image.ANTIALIAS)
mini_path = image_name + "_mini" + image_ext
mini_image.save(mini_path, optimize=True, quality=95)
small_image.close()
mini_image.close()
Итак, в основном пользователь загружает изображение профиля, функция перезаписи проверяет, существуют ли изображения в каталоге, и если он это делает, он удаляет их, метод сохранения будет затем возьмите новое изображение, измените его размер на несколько миниатюр и сохраните. Как я могу исправить ошибку разрешения? Я закрываю изображения, но я все еще получаю ошибку ...