Próbuję pobrać plik obrazu, zrobić kilka rzeczy i zapisać zmiany z powrotem do oryginalnego pliku. Problem polega na nadpisaniu oryginalnego obrazu; nie wydaje się być niezawodne sposób zwolnić uchwyt na filename
.Jak zamknąć obraz?
Potrzebuję, aby ta zawartość została zapisana z powrotem do tego samego pliku, ponieważ procesy zewnętrzne zależą od tej nazwy pliku, aby pozostać bez zmian.
def do_post_processing(filename):
image = Image.open(str(filename))
try:
new_image = optimalimage.trim(image)
except ValueError as ex:
# The image is a blank placeholder image.
new_image = image.copy()
new_image = optimalimage.rescale(new_image)
new_image.save('tmp.tif')
del image
os.remove(str(filename))
os.rename('tmp.tif', str(filename))
del image
pracowała aż dodano obsługę wyjątków, gdzie wykonany kopię obrazu. Próbowałem również uzyskać dostęp do atrybutu Imagei with image
, bez powodzenia.
Tak blisko, że powinienem był to wyczuć. – Chris