ImageMagick Прозрачный PNG-фон

Я пытаюсь взять этот образ, введите описание изображения здесь который я преобразовал в файл .png, а затем хочу удалить белый фон, чтобы сделать его прозрачным.

Я попытался выполнить следующее, но не повезло.

$strInputFile = 'car.png'; $execScript = '/usr/local/bin/convert '.$strInputFile.' '; $execScript .= "-transparent white car-new.png"; $output = shell_exec($execScript); 

Я делаю что-то неправильно? Новый файл создается, но все еще имеет белый фон.

Аналогичная проблема с php imagick:

Когда вы конвертируете SVG в прозрачный PNG, не забудьте поставить это перед $ imagick-> readImageBlob ():

 $imagick->setBackgroundColor(new ImagickPixel('transparent')); 

Поскольку изображение является JPEG, которое подвержено потерям и небольшим неточностям цвета, белые в вашем изображении на самом деле не 100% чисто белые. ImageMagick имеет способ справиться с этим с помощью настройки -fuzz которая позволяет определить степень нечеткости или диапазон допустимых ошибок при указании цветов.

Правильное заклинание здесь:

 convert car.jpg -fuzz 10% -transparent white car.png 

Попробуйте следующий код:

 $strInputFile = 'car.png'; $target = 'car_transparent.png'; $im = new Imagick($strInputFile); $im->paintTransparentImage($im->getImageBackgroundColor(), 0, 10000); $im->setImageFormat('png'); $im->writeImage($target); $im->destroy(); 

Вы -transparency виду использовать -transparency а не -transparent ?

Фон вашего изображения не white (я имею в виду 0xFFFFFF), это 0xFEFEFE. Пытаться:

 $execScript .= "-transparent #FEFEFE car-new.png"; 

Если вы не создаете сценарий оболочки, попробуйте это:

 $ convert -transparency white car.png car-new.png 

Это должно работать в общем терминале. Если это не так, дайте мне знать. Надеюсь, поможет!