Установить прозрачный цвет в изображении на основе палитры - PullRequest
0 голосов
/ 30 мая 2010

Я хочу преобразовать альфа-прозрачное изображение PNG в изображение PNG на основе палитры.

В GD я могу сделать это легко:

    // We have already the image loaded in $source_img
    $w=200; $h=200; // We supose that img dimensions are 200x200
    $img = imagecreatetruecolor($w, $h); // New black image
    list($r, $g, $b) = array(200, 200, 200); // Some color that doesn't appear in image to avoid conflict 
    $color = imagecolorallocate($img, $r, $g, $b); 
    imagefill($img, 0, 0, $color);  // Fill the black image with the chosen color.
    imagecolortransparent($img, $color);  // Set the chosen color as transparent
    $res = imagecopyresampled($img, $source_img, 0, 0, 0, 0, $w, $h, $w, $h);

Но в Imagick я не знаю, как установить прозрачный цвет (imagecolortransparent () в GD). Я потратил часы на поиск в Интернете, но помощь на сайте php не очень обширна, и есть много недокументированных функций.

Спасибо.

1 Ответ

1 голос
/ 15 июня 2010

В командной строке я бы сделал что-то вроде этого:

convert test.png -transparent-color white PNG8:converted.png

Но, похоже, проблема в некоторых версиях чата с этим типом преобразования, я нашел это сообщение в группе пользователей от парня, у которого, похоже, есть похожие проблемы: http://studio.imagemagick.org/pipermail/magick-users/2009-May/022534.html

Используете ли вы командную строку при работе с IM или модуль PHP (http://de.php.net/manual/en/book.imagick.php)?

...