Преобразование изображения из RGBA в RGB показывает отступы, как это обрезать?

Я пытаюсь преобразовать изображение из RGBA в RGB. Но преобразование в RGB добавляет дополнение к изображению. Как я могу преобразовать без заполнения? Или как я могу удалить его?

    img = Image.open('path.png')
    img.save("img.png")
    
    rgb_im = img.convert('RGB')
    rgb_im.save("rgb_im.png")

Спасибо. Изображения ниже, до и после преобразования:

Преобразование изображения из RGBA в RGB показывает отступы, как это обрезать?

Преобразование изображения из RGBA в RGB показывает отступы, как это обрезать?

Вы не показываете изображения! Я могу только догадываться, что альфа-канал делает что-то неожиданное. Может попробовать кадрировать до альфа-канала stackoverflow.com/a/63244423/2836621

Mark Setchell 04.05.2022 13:00

Это не заполнение, вы просто удаляете прозрачность из кадра, поэтому он становится белым, а не прозрачным. Вы должны обрезать изображение.

David 04.05.2022 13:26
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы откроете свое первое изображение, вы увидите, что холст больше, чем видимое изображение, так как у вас есть прозрачная рамка, представленная пикселями, имеющими rgba=(255,255,255,0). Когда вы удаляете канал alpha путем преобразования RGBA в RGB, эта прозрачность исчезает, так как остается только rgba=(255,255,255), который оказывается белым, который вы видите на втором изображении.

Итак, вы хотите сделать что-то похожее на предложенное здесь

from PIL import Image, ImageChops

def trim_and_convert(im):
    bg = Image.new(im.mode, im.size, (255,255,255,0))
    diff = ImageChops.difference(im, bg)
    diff = ImageChops.add(diff, diff, 2.0, -100)
    bbox = diff.getbbox()
    if bbox:
        return im.crop(bbox).convert('RGB')

im = Image.open("path.png")

rgb_im = trim_and_convert(im)
rgb_im.save("rgb_im.png")

Другие вопросы по теме