Я пытаюсь повысить резкость изображений с измененным размером, используя этот код:
imageconvolution($imageResource, array(
array( -1, -1, -1 ),
array( -1, 16, -1 ),
array( -1, -1, -1 ),
), 8, 0);
Когда прозрачное PNG-изображение усиливается с помощью приведенного выше кода, оно появляется с черной точкой в верхнем левом углу (я пробовал разные ядра свертки, но результат тот же). После изменения размера изображение выглядело нормально.
1-е изображение является исходным
2-е фото с резкостью
EDIT: что я делаю не так? Я использую цвет, полученный из пикселя.
$color = imagecolorat($imageResource, 0, 0);
imageconvolution($imageResource, array(
array( -1, -1, -1 ),
array( -1, 16, -1 ),
array( -1, -1, -1 ),
), 8, 0);
imagesetpixel($imageResource, 0, 0, $color);
Является ли imagecolorat
правильной функцией? Или позиция правильная?
EDIT2: я изменил координаты, но все равно не повезло. Я проверил прозрачность, заданную imagecolorat
(согласно этому post). Это дамп:
array(4) {
red => 0
green => 0
blue => 0
alpha => 127
}
Альфа 127 = 100% прозрачность. Эти нули могут вызвать проблему...