Я пытаюсь решить проблему в Python, где мне нужно преобразовать изображения TIFF в JPEG. Я пробовал использовать Pillow, а также OpenCV для этого, но продолжаю получать ошибки, когда пытаюсь преобразовать изображение TIFF, на котором сохранена прозрачность. Если я сохраню TIFF и удалю прозрачность, он успешно сохранит JPEG. Прозрачность должна оставаться на TIFF. Кто-нибудь знает решение этой проблемы? Если бы я мог найти способ даже сохранить TIFF без прозрачности с помощью сценария Python, сохранить как JPEG, а затем удалить TIFF без прозрачности, это тоже сработало бы. Любая помощь здесь будет принята с благодарностью. Ниже приведены примеры кода, который я пробовал, но потерпел неудачу:
import os
from PIL import Image
os.chdir('S:/DAM/Test/Approved/')
# for root, dirs, files in os.walk('S:/DAM/Test/Approved'):
for root, dirs, files in os.walk('.'):
for name in files:
if name.endswith('.tif'):
filename = os.path.join(root, name)
print('These are the files: ', filename)
# img = Image.open(filename).convert('RGB')
img = Image.open(filename)
print('image is open', filename)
img = img.convert('RGB')
print('image should be converted: ', filename)
imageResize = img.resize((2500, 2500))
print('image should be resized: ', filename)
imageResize.save(filename[:-4]+'.jpg', 'JPEG')
print('image should be saved as a jpeg: ', filename)
Вот ошибка, которую я получаю, когда Python пытается открыть TIFF с прозрачностью с помощью Pillow:
Exception has occurred: UnidentifiedImageError
cannot identify image file '.\\Beauty Images\\XXX.tif'
File "U:\Python files\image_conversion2.py", line 22, in <module>
img = Image.open(filename)
Когда я запускаю этот код с помощью OpenCV, он также не работает с тем же изображением:
img = cv2.imread('S:/DAM/Test/Approved/Beauty Images/XXX.tif')
cv2.imwrite('S:/DAM/Test/Approved/Beauty Images/XXX.jpg', img)
Вот ошибка, которую я получаю с этим кодом:
OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:715: error: (-215:Assertion failed) !_img.empty() in function 'cv::imwrite'
File "U:\Python files\img_convert_new.py", line 19, in <module>
cv2.imwrite('S:/DAM/Test/Approved/Beauty Images/XXX.tif', img)