用颜色叠加png图像(php)

时间:2015-11-04 08:47:20

标签: php image

我有像这样的图像

enter image description here

<小时/> 我需要像那样

enter image description here

另外,我需要保持透明边缘。

2 个答案:

答案 0 :(得分:2)

您可以使用ImageMagick中的阈值功能将所有颜色变为黑色,如下所示:

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

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

enter image description here

以这种方式执行它可能更合适,如果您使用超过16位的每通道量化:

#!/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");
?>

答案 1 :(得分:1)

如果您希望使用GD而不是ImageMagick,可以这样做:

<?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