Python не обновляет альфа-параметр в изображениях PIL - PullRequest
0 голосов
/ 07 января 2019
def apply_alpha(img, alpha_value):
    print("alpha_value" + str(alpha_value))
    mask_value = int(alpha_value * 255)
    print("mask_value" + str(mask_value))
    img.putalpha(mask_value)
    return img

def apply_alpha(img, alpha_value):
    import copy
    tmp = copy.copy(img)
    print("alpha_value" + str(alpha_value))
    mask_value = int(alpha_value * 255)
    print("mask_value" + str(mask_value))
    tmp.putalpha(mask_value)
    return tmp

working_image = apply_alpha(obs, alpha)

Я попробовал обе вышеупомянутые функции apply_alpha, где "img" - это изображение PIL, и ни одна из них правильно не применяет альфа (ничего не меняется).

Я склеиваю отдельные листы составного изображения и использую «положить альфа», чтобы установить прозрачность каждой отдельной плитки. Я считаю, что «паста» в слиянии отдельных плиток стирает путальфу для каждого отдельного изображения. Как я могу заставить это работать?

Я использую этот merge_images для сшивания отдельных изображений плиток: Сшивание фотографий вместе

Этот сценарий отличается от других заданных вопросов, потому что img.putalpha (...) используется внутри функции, из-за чего он не работает

1 Ответ

0 голосов
/ 07 января 2019

Я разобрался: причина проблемы была в том, что в функции слияния для изображений есть этот код:

    result = Image.new('RGB', (result_width, result_height))
    result.paste(im=img1, box=(0, 0), mask=img1)
    result.paste(im=img2, box=(width1, 0), mask=img2)

Поскольку тип изображения был "RGB", альфа-каналы игнорировались при составлении тайлов. Убедитесь, что тип изображения «RGBA»

...