Сразу объясню задачу. Есть PNG24 файл с изображением предмета. Все вокруг - прозрачная область. Каким образом с помощью PHP можно осуществить инверсию альфа-канала? В результате прозрачные области должны стать непрозрачными и наоборот. Т.е., пиксель с альфа-индексом 127 должен получить индекс 0, а, например, с индексом 117 - получить 10. Как это сделать? Спасибо.
Попробуй это Код (Text): <?php header('Content-type: image/gif'); $image = imagecreatefrompng('apple.png'); $size = getimagesize('apple.png'); $new_image = imagecreatetruecolor($size[0], $size[1]); for($x=0;$x<$size[0];$x++) { for($y=0;$y<$size[1];$y++) { $rgb = imagecolorsforindex($image, imagecolorat($image, $x, $y)); $color = imagecolorallocatealpha($new_image, ($rgb['alpha'] != 0 ? 0 : 255), ($rgb['alpha'] != 0 ? 0 : 255), ($rgb['alpha'] != 0 ? 0 : 255), ($rgb['alpha'] != 0 ? 127 : 0)); imagesetpixel($new_image, $x, $y, $color); } } imagepng($new_image); imagedestroy($new_image); imagedestroy($image); ?> Начальная картинка в apple.png Если нужна просто инверсия альфы, замени девятую строку на Код (Text): $color = imagecolorallocatealpha($new_image, $rgb['red'], $rgb['green'], $rgb['blue'], 127-$rgb['alpha']); Но эффект будет другой