0

У меня проблема с imagecopyresampled для буферов, которые используют альфа-значения. по-видимому, алгоритм преумножает значения альфа-пикселей перед фильтрацией, это приводит к черным границам объектов arround.imagecopyresampled in php - premultiplied alpha issue

Шаги для воспроизведения:

  • принять изображение, которое полностью белый в части RGB и имеет (сглаженные !!) белый круг (идут с кругом, а не квадрата!) На черный фон в альфа-части (поэтому альфа-часть будет иметь в основном полностью белые и полностью черные пиксели, а также некоторые градиентные пиксели на границах круга из-за сглаживания - это означает, что входное изображение НЕ предварительно умножено - оно прямо/unmatted, потому что часть изображения RGB полностью белая).

  • scaledown изображение наполовину используя imagecopyresampled

  • составляют результат по совершенно белое изображение

Что я бы ожидать: полностью белое изображение

Что я получаю: серая граница вокруг контура круга

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

Кто-нибудь знает workarround для этого?

ответ

0

Я предлагаю попробовать изображение magick для php.

http://www.php.net/manual/en/imagick.resizeimage.php

http://www.php.net/manual/en/imagick.scaleimage.php

в моем опыте все перебранки относительно изображений в PHP просто уйти.

+0

мы просто пробовали это, но с воображением альфа-канал, кажется, полностью потерялся – Mat