Как изменить фон черного цвета на прозрачный? - PullRequest
2 голосов
/ 26 апреля 2010

Я вращаю изображение, используя Image Magick (поскольку PHP-GD уменьшает изображение).

Но фон остается черным. Кроме того, изображение выглядит не очень хорошо (но лучше, чем PHP-GD).

Есть предложения?

@ Орен, @razzed Вот код

$patchImageS        =   'kapeels.png'; // the image to be patched over the final bg
$imagick            =   new Imagick();     $imagick->readImage($patchImageS);
$imagick->rotateImage(new ImagickPixel(), 355);
$imagick->transparentPaintImage('black', 0.0,0,false);
header('content-type:image/png');
$fp=fopen('tts.png','w+'); 
fwrite($fp,$imagick->getImage()); 
fclose($fp);

А это изображение, которое я пытаюсь повернуть -

http://www.lilpirate.net/kapeels.png

Спасибо за ответ, ребята: -)

Ответы [ 2 ]

1 голос
/ 23 июня 2012

Поворот изображения так:

$im = new Imagick('kapeels.png'); 
$im->rotateImage( new ImagickPixel('none'), 7 ); 
$im->trimImage ( 0 ); 
$im->resetImagePage( '216x174+0+0' ); 
$im->writeImage('rotateImage.png');  
$im->destroy(); 

Вам понадобится thage для центрирования изображения обратно на холст, но я не знаю, зачем вам нужны значения, так как Imagemagick их не использует. Единственный способ, которым я могу придумать автоматическую настройку значений, - это получить размер изображения после обрезки и использовать его при сбросе.

Со спокойствием все, что я мог бы предложить, это начать с большего изображения и уменьшить его после поворота и посмотреть, поможет ли это; возможно использовать некоторую заточку. Но я не думаю, что многое поможет, так как линии такие тонкие и близко друг к другу.

1 голос
/ 09 июля 2010

После создания объекта Imagick, в нем аргументы устанавливают прозрачный фон:

$imagick->newimage($width, $height, "rgba(0, 0, 0, 0)");
...