2011-01-06 8 views
0

CSS 스프라이트에 대한 이미지 생성을 자동화하고 싶습니다.CSS 스프라이트를 만들기위한 imagefilter

내 목표는 컬러 축소판 그림을 흑백으로 변환하고 상단에 색상을, 하단에 검정색을 사용하여 하나의 이미지로 병합하는 것입니다. 여기

내가 지금까지 무엇을 가지고 :

<?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

거 말야 무엇을 의미하는 "병합"($ image1에는 $ 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

은 원본의 높이의 두 배인 새 이미지를 만든 다음 상단에 컬러 버전을 복사하고 하단에는 회색조 버전을 복사 한 다음 원래 이미지 파일 위에 새 이미지로 다시 저장합니다. – 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

관련 문제