答案 0 :(得分:2)
您可以使用ImageMagick中的阈值功能将所有颜色变为黑色,如下所示:
<?php
// Load the PNG image
$im = new Imagick("image.png");
// Make everything black
$im->thresholdimage(65536);
$im->writeImage("result.png");
?>
以这种方式执行它可能更合适,如果您使用超过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");
?>