2009-05-04 6 views
0

私は私のサーバーに保存されている黒と白のJPEGのコレクションを持っています。これらの画像はシンボルベースで、シンボルは白い背景上の黒線の集まりです。PHP/GDでJPEGに色を重ねて表示していますか?

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

はJPEGを取得するよう:$イメージ= imagecreatefromjpeg($ imgURL)、 、PHPを通じてRGBへ(#FF0000の、と言う)HEXコードを変換する

そして、これらの変数を供給する。

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; 
} 

何らかの理由で、何らかの理由で機能が動作しません(新しい色にオーバーレイされません)。

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

多くのありがとうございます。

+0

$カラーはどのように渡されますか?変数にアクセスするためのこの{0}表記は見たことがありません。 –

+0

白の「FFFFFF」のような文字列の場合は、中括弧ではなく、角括弧を使用する必要があります。 –

答えて

0

色が唯一の問題である場合は、この試みることができる:あなたはあなただけ読み込んだJPEGは、真の色やpalette-であるかどうかを調べるためにimageistruecolor機能を使用することができます

 
     <php> 
     //SNIP 
     $color = preg_replace('/^#/','',$color); //Get rid of "#" if it's there 
     $r = hexdec("0x{$color[0]}{$color[1]}"); 
     $g = hexdec("0x{$color[2]}{$color[3]}");
$b = hexdec("0x{$color[4]}{$color[5]}"); //SNIP </php>

0

をベース。あなたは、新しい色を適用することができるはず

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

:それは本当の色がない場合は、同じ幅と高さの新しい真のカラー画像を作成し、上の古いイメージをコピーすることができます。

関連する問題