12
votes

Fond de png transparent imagemagick

J'essaie de prendre cette image, Entrez la description de l'image ici que j'ai converti dans un fichier .png et Ensuite, veuillez supprimer le fond blanc pour le rendre transparent.

J'ai essayé de courir ce qui suit mais je n'ai pas eu de chance. P>

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


0 commentaires

6 Réponses :



0
votes

Le fond de votre image n'est pas blanc (je veux dire 0xFFFFFF), c'est 0xfefefe. Essayez: XXX


0 commentaires

26
votes

Problème similaire avec PHP Imagick:

Lorsque vous convertissez SVG en PNG transparent, n'oubliez pas de mettre ceci avant Imagick-> ReadimageBlob (): P>

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


4 commentaires

J'ai eu le même problème et la suggestion ci-dessus m'a aidé à obtenir un peu plus loin. Cependant, le fichier PNG généré a des antécédents noirs. :(


Donc, après beaucoup d'essais et d'erreurs, j'ai réalisé que j'utilisais $ IM-> AdaptiveSharpenImage (2,1); Dans mon code PHP après la méthode SetbackgroundColor et celle-ci est apparue pour créer un arrière-plan non transparent. Après avoir retiré cette méthode, je pourrais obtenir des arrière-plans transparents PNG. Maintenant, pour déterminer comment obtenir des images de PNG SPARP, croustillantes et complets de SVG. :) Merci encore pour la réponse.


n'oubliez pas de mettre ceci avant doit être donné en gras. sauvé plusieurs heures !!


En gras supplémentaire, voire lourd ou noir, avec une surface d'affichage étendue!



2
votes

Essayez le code suivant:

$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();


0 commentaires

0
votes

Si vous ne faites pas de script shell, essayez ceci:

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


0 commentaires

4
votes

Comme l'image est une JPEG, qui est soumise à des pertes et à de légères inexactitudes de couleur, les Blancs de votre image ne sont pas réellement 100% blancs pure. Imagemagick a un moyen de traiter avec ceci via le paramètre -Fuzz code> qui permet un degré de floue ou une plage d'erreur autorisée, lors de la spécification des couleurs.

L'incantation correcte ici est: P >

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


1 commentaires

Avec quelques tentatives, j'ai obtenu un résultat parfait avec: convert source.png -fuzz 4% -Transparent white résultat.png . 10% mangeait trop de pixels.