Когда предоставляется png с прозрачным фоном, даже если он не виден, это вызывает проблемы с остальной частью моего кода, поэтому я ищу способ удалить прозрачный фон либо с помощью решения с открытым исходным кодом, либо с помощью библиотеки libpng по умолчанию. - желательно в линуксе.
Я попробовал использовать ImageMagick и убедился, что преобразование прозрачного фона в любой цвет решает мои проблемы. Я просто ищу другое решение, чем ImageMagick.
Опубликуйте свой код и пример изображения. Какой язык программирования или инструмент вы хотите использовать, чтобы сделать то же самое? Можете ли вы использовать Python/OpenCV?
Вы можете сделать это разными способами. Вот пример использования пакета NetPBM и использования этого красного изображения с прозрачным круглым отверстием в центре:
Шаги следующие:
ppmmake blue 200 100 > background.ppm
pngtopam -alphapam YOURIMAGE.png > foreground.pam
pamcomp foreground.pam background.ppm > result.ppm
pamtopng result.ppm > result.png
ТЛ;ДР
Это все немного болтовня, поэтому используйте возможности Unix для объединения множества хорошо выполненных задач, и вы получите:
pamcomp <(pngtopam -alphapam YOURIMAGE.png) <(ppmmake blue 200 100) | pamtopng - > result.png
В зависимости от того, как на самом деле построен ваш PNG, и при потере гибкости в цвете, заменяющем прозрачность, вам может оказаться достаточно этой команды, которая просто отключает канал alpa:
pngtopam YOURIMAGE.png | pamtopng - > result.png
Другими способами решения этой проблемы могут быть:
С PIL/Pillow это может выглядеть так:
from PIL import Image
im = Image.open('YOURIMAGE.png') # open image
bg = Image.new('RGB',im.size, 'yellow') # make yellow background, same size
bg.paste(im, mask=im) # composite your image over background
bg.save('result.png') # save result
Добро пожаловать в Stack Overflow. Пожалуйста, прочитайте информационные руководства в справочном центре (stackoverflow.com/help ), в частности «Как задать хороший вопрос» ( stackoverflow.com/help/how-to-ask ) и «Как создать минимальный воспроизводимый пример и показывать код в виде текста, а не изображения» ( stackoverflow.com/help/minimal-reproducible-example).