0

サーバーに保存されている白黒の JPEG のコレクションがあります。これらの画像はシンボル ベースであり、シンボルは白い背景に黒い線の集まりです。

GD を使用して、渡された変数に基づいてその場で黒色を別の色に置き換えようとしています。現在、私は:

$image = imagecreatefromjpeg($imgURL) として JPEG を取得し、HEX コード (#FF0000 など) を PHP で RGB に変換します。

そして、これらの変数を次のようにフィードします。

private function colourize_image($image, $colour, $contrast = 0) {
    if (!$image) { return false; }

    imagealphablending($image, true);
    imagesavealpha($image, true);

    # Convert hex colour into RGB values
    $r = hexdec('0x' . $colour{0} . $colour{1});
    $g = hexdec('0x' . $colour{2} . $colour{3});
    $b = hexdec('0x' . $colour{4} . $colour{5});

    imagefilter($image, IMG_FILTER_COLORIZE, $r, $g, $b);
    imagefilter($image, IMG_FILTER_CONTRAST, $contrast);

    # Return the GD image object
    return $image;
}

何らかの理由で、機能がまったく機能しません (新しい色をオーバーレイしません)。

私がどこで間違っているのか、誰にでもアドバイスできますか?

どうもありがとう。

4

2 に答える 2

0

この関数を使用して、imageistruecolorロードしたJPEGがトゥルーカラーであるかパレットベースであるかを確認できます。トゥルーカラーでない場合は、同じ幅と高さの新しいトゥルーカラー画像を作成し、古い画像を次の場所にコピーできます。

$width = imagesx($jpeg);
$height = imagesy($jpeg);
$image = imagecreatetruecolor($width, $height);
imagecopy($jpeg, $image, 0, 0, 0, 0, $width, $height);

これで、新しい色を適用できるようになります。

于 2009-05-04T21:59:00.137 に答える