Цвета изменились после преобразования JPEG в PNG с использованием PIL.Python

Программы на Python
Ответить
Anonymous
 Цвета изменились после преобразования JPEG в PNG с использованием PIL.

Сообщение Anonymous »

Моя функция Lambda использует библиотеку изображений Python (PIL) для преобразования изображений, в частности, конвертируя все в PNG. Недавно я столкнулся с несколькими случаями, когда цвета изображения заметно менялись во время преобразования из JPG. Не могли бы вы посоветовать мне, что мне делать?
Оригинальный JPG
Конвертированный PNG

Код: Выделить всё

def convert_image (s3_source_key, prefix):
playout_key = prefix + '_playout.png'
thumbnail_key = prefix + '_thumb.png'
all_good = False

try:
s3_client = boto3.client('s3')

# read the original file
file_object = s3_client.get_object(Bucket=S3_SOURCE_BUCKET, Key=s3_source_key)['Body']
file_buffer = file_object.read()

im_orig = Image.open(BytesIO(file_buffer))

# save to png (even if original is actually a png)
buffer = BytesIO()
im_orig.convert('RGBA').save(buffer, 'PNG', optimize=True)

buffer.seek(0)
s3_client.put_object(Body=buffer, Bucket=BUCKET_NAME, Key=playout_key)

# create a thumbnail for an image asset
im = Image.open(BytesIO(file_buffer))

width, height = im.size
new_w = width / 3 # 3 is a default resize coefficient
new_h = height / 3

im = im.convert("RGBA")
im = im.resize((int(new_w), int(new_h)))
buffer = BytesIO()
im.save(buffer, 'PNG')
buffer.seek(0)

s3_client.put_object(Body=buffer, Bucket=BUCKET_NAME, Key=thumbnail_key)
P.S. Я попытался преобразовать в RGB вместо RGBA, но цвета по-прежнему меняются.
Я также пытался сохранить PNG с флагом «оптимизировано», установленным в значение «False».
Кроме того, я пытался сохранить цветовой профиль. .
По-прежнему не повезло...

Подробнее здесь: https://stackoverflow.com/questions/790 ... -using-pil
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»