PHP - 替换图像中的颜色

Mar*_*ark 6 php gd replace colors

我希望有人能帮帮忙,

我制作了一个掩盖图像的脚本......但它依赖于用'(绿色屏幕'样式)掩盖的颜色.问题是如果我正在掩盖的图像包含它被破坏的颜色.

我要做的是在屏蔽图像之前用类似的颜色(例如0,0,254)替换我的键控颜色(0,0,255)的任何出现.

我找到了一些基于gif或256色PNG的解决方案,因为它们已编入索引.

所以我的问题是将它转换为gif或256 png然后查看索引并替换颜色或搜索每个像素并替换颜色也会更有效.

谢谢,

小智 9

您需要打开输入文件并扫描每个像素以检查您的chromokey值.

像这样的东西:

// Open input and output image
$src = imagecreatefromJPEG('input.jpg') or die('Problem with source');
$out = ImageCreateTrueColor(imagesx($src),imagesy($src)) or die('Problem In Creating image');

// scan image pixels
for ($x = 0; $x < imagesx($src); $x++) {
    for ($y = 0; $y < imagesy($src); $y++) {
        $src_pix = imagecolorat($src,$x,$y);
        $src_pix_array = rgb_to_array($src_pix);

            // check for chromakey color
            if ($src_pix_array[0] == 0 && $src_pix_array[1] == 0 && $src_pix_array[2] == 255) {
                $src_pix_array[2] = 254;
            }


        imagesetpixel($out, $x, $y, imagecolorallocate($out, $src_pix_array[0], $src_pix_array[1], $src_pix_array[2]));
    }
}


// write $out to disc

imagejpeg($out, 'output.jpg',100) or die('Problem saving output image');
imagedestroy($out);

// split rgb to components
function rgb_to_array($rgb) {
    $a[0] = ($rgb >> 16) & 0xFF;
    $a[1] = ($rgb >> 8) & 0xFF;
    $a[2] = $rgb & 0xFF;

    return $a;
}
Run Code Online (Sandbox Code Playgroud)