如何使用PHP改变图像的颜色


How to change the color in a image using PHP

我有一个条形码的图像,我想将黑色更改为任何其他更鲜艳的颜色。如何在PHP中实现呢?

如果你的图像是单色的,那么你可以使用imagefilter()函数:

$image = imagecreatefromjpeg('filename.jpg');
imagefilter($image, IMG_FILTER_COLORIZE, 0, 0, 255); // make it blue!
imagejpeg($image, 'filename.jpg');

结合这个网站的代码并添加一点到我自己的,我已经弄清楚了。享受。

function updateThumb($image, $newColor) {
    $img = imagecreatefrompng($image);
    $w = imagesx($img);
    $h = imagesy($img);
    // Work through pixels
    for($y=0;$y<$h;$y++) {
        for($x=0;$x<$w;$x++) {
            // Apply new color + Alpha
            $rgb = imagecolorsforindex($img, imagecolorat($img, $x, $y));
            $transparent = imagecolorallocatealpha($img, 0, 0, 0, 127);
            imagesetpixel($img, $x, $y, $transparent);

            // Here, you would make your color transformation.
            $red_set=$newColor[0]/100*$rgb['red'];
            $green_set=$newColor[1]/100*$rgb['green'];
            $blue_set=$newColor[2]/100*$rgb['blue'];
            if($red_set>255)$red_set=255;
            if($green_set>255)$green_set=255;
            if($blue_set>255)$blue_set=255;
            $pixelColor = imagecolorallocatealpha($img, $red_set, $green_set, $blue_set, $rgb['alpha']);
            imagesetpixel ($img, $x, $y, $pixelColor);
        }
    }
    // Restore Alpha
    imageAlphaBlending($img, true);
    imageSaveAlpha($img, true);
    return $img;
}
function makeThumb($path, $top, $bottom=FALSE) {
    $width = imagesx($top);
    $height = imagesy($top);
    $thumbHeight = $bottom != FALSE ? $height * 2 : $height;
    // Create Transparent PNG
    $thumb = imagecreatetruecolor($width, $thumbHeight);
    $transparent = imagecolorallocatealpha($thumb, 0, 0, 0, 127);
    imagefill($thumb, 0, 0, $transparent);
    // Copy Top Image
    imagecopy($thumb, $top, 0, 0, 0, 0, $width, $height);
    // Copy Bottom Image
    if ($bottom != FALSE) {
        imagecopy($thumb, $bottom, 0, $height, 0, 0, $width, $height);
    }
    // Save Image with Alpha
    imageAlphaBlending($thumb, true);
    imageSaveAlpha($thumb, true);
    header('Content-Type: image/png');
    imagepng($thumb, $path); // save image as png
}
$thumbTop = updateThumb('input/path', array(240,105,15));