2015-11-04 1 views
0

J'ai une image comme celleimage PNG superposition avec la couleur (php)

enter image description here


et je dois tourner dans ce genre

enter image description here

Aussi je dois garder les bords transparents.

+0

Créer une autre image et les afficher en conséquence. –

+0

Hmmm .... J'ai besoin d'automatiser le processus avec php. – remtsoy

+1

Alors, qu'est-ce qui a essayé? –

Répondre

1

Si vous préférez utiliser GD sur ImageMagick, vous pouvez le faire comme ceci:

<?php 
// Load the PNG image 
$im = imageCreateFromPng("image.png"); 

// Ensure true colour 
imagepalettetotruecolor($im); 

// Iterate over all pixels 
for ($x = 0; $x < imagesx($im); $x++) { 
    for ($y = 0; $y < imagesy($im); $y++) { 
     // Get color, and transparency of this pixel 
     $col=imagecolorat($im,$x,$y); 
     // Extract alpha 
     $alpha = ($col & 0x7F000000) >> 24; 
     // Make black with original alpha 
     $repl=imagecolorallocatealpha($im,0,0,0,$alpha); 
     // Replace in image 
     imagesetpixel($im,$x,$y,$repl); 
    } 
} 
imagePNG($im,"result.png"); 
?> 

enter image description here

2

Vous pouvez faire toutes les couleurs vont au noir en utilisant une fonction de seuil dans ImageMagick comme ceci:

<?php 
// Load the PNG image 
$im = new Imagick("image.png"); 

// Make everything black 
$im->thresholdimage(65536); 
$im->writeImage("result.png"); 
?> 

enter image description here

Il serait probablement plus approprié de le faire de cette façon que, en cas vous utilisez toujours une quantification de plus de 16 bits par canal:

#!/usr/local/bin/php -f 

<?php 
// Load the PNG image 
$im = new Imagick("image.png"); 

// Work out quantum range - probably 255 or 65535 
$m=$im->getQuantumRange(); 
$m=$m["quantumRangeLong"]; 

// Make everything darker than that black 
$im->thresholdimage($m); 
$im->writeImage("result.png"); 
?>