У меня проблема с imagecopyresampled для буферов, которые используют альфа-значения. по-видимому, алгоритм предварительно умножает альфа-значения пикселей перед фильтрацией, что приводит к появлению черных границ вокруг объектов.
Шаги для воспроизведения:
возьмите изображение, полностью белое в части RGB и имеющее белый цвет (сглаженный !!) (с кружком, а не с квадратом!) На черном фоне в альфа-части (так что альфа-часть будет иметь в основном полностью белые и полностью черные пиксели, а также некоторые градиентные пиксели на границах круга из-за сглаживания - это означает, что входное изображение НЕ предварительно умножается - оно является прямым / неформатированным, поскольку часть изображения RGB полностью белый).
уменьшить изображение наполовину, используя imagecopyresampled
скомпонуйте результат по полностью белому изображению
Что бы я ожидал:
полностью белое изображение
Что я получу:
сероватая окантовка вокруг контура круга
Я почти уверен, что это связано с предварительным умножением альфа в алгоритме масштабирования (алгоритм умножает альфа-значение пикселей на его значение rgb, чтобы вычислить новое значение rgb - таким образом, белые пиксели станут серыми)
Кто-нибудь знает обходной путь для этого?