2011-01-06 8 views
0

CSSスプライトのイメージの作成を自動化したいと思います。CSSスプライトを作成するイメージフィルタ

私の目標は、カラーサムネイルを白黒に変換して、上に色を、下に黒で1つの画像にマージすることです)。ここで

は、私がこれまで持っているものです。

<?php 
$image = imagecreatefrompng('test.png'); 

if($image && imagefilter($image , IMG_FILTER_GRAYSCALE)) 
{ 
    echo 'Image converted.'; 

    imagepng($image, 'test.png'); 
} 
else 
{ 
    echo 'Conversion failed.'; 
} 

imagedestroy($image); 
?> 
+0

doyouが何を意味するか、 "マージ"($画像1は$ output_imageをする必要があります)。これはブレンディングによるオーバーレイか、イメージの上部をカラーバージョンにするのと同様ですが、下半分は白黒バージョンです。それ以上の詳細は? – dqhendricks

+0

私は '合併された'画像を色(上)と黒と白(下)で作成したいと思います。 – Eeyore

答えて

3
<?php 
$image_path = 'test.png'; 
$input_image = imagecreatefrompng($image_path); 
$image_info = getimagesize($image_path); 
$output_image = imagecreatetruecolor($image_info[0], $image_info[1] * 2); 
imagecopy ($output_image, $input_image, 0, 0, 0, 0, $image_info[0], $image_info[1]); 
if(imagefilter($input_image, IMG_FILTER_GRAYSCALE)) { 
    echo 'Image converted.'; 
    imagecopy ($output_image, $input_image, 0, $image_info[1], 0, 0, $image_info[0], $image_info[1]); 
    imagepng($output_image, 'test.png'); 
} else { 
    echo 'Conversion failed.'; 
} 
imagedestroy($input_image); 
imagedestroy($output_image); 
?> 
+0

は、オリジナルの高さの2倍の新しいイメージを作成し、次にカラーバージョンを上部にコピーし、グレースケールバージョンを下部にコピーして元のイメージファイルに新しいイメージで保存します。 – dqhendricks

+0

私は取得しています:致命的なエラー:未定義の関数を呼び出すcreateimagetruecolor()私はそれをimagecreatetruecolorに変更し、変換に失敗します。 – Eeyore

+0

おっと、代わりにimagecreatetruecolor()する必要があります。申し訳ありません。 – dqhendricks

0

私はバグを見つけ

<?php 
$image_path = 'test.png'; 
$input_image = imagecreatefrompng($image_path); 
$image_info = getimagesize($image_path); 
$output_image = imagecreatetruecolor($image_info[0], $image_info[1] * 2); 
imagecopy ($output_image, $input_image, 0, 0, 0, 0, $image_info[0], $image_info[1]); 
if($output_image && imagefilter($output_image , IMG_FILTER_GRAYSCALE)) { 
    echo 'Image converted.'; 
    imagecopy ($output_image, $input_image, 0, $image_info[1], 0, 0, $image_info[0], $image_info[1]); 
    imagepng($output_image, 'test.png'); 
} else { 
    echo 'Conversion failed.'; 
} 
imagedestroy($input_image); 
imagedestroy($output_image); 
?> 
+0

または上の画像を入力します。もともと入力画像をフィルタリングすることを意図していました。編集された投稿。 – dqhendricks

関連する問題