2013-04-07 7 views
0

나는 img_filter_colorize() 약간의 PHP를 배웠습니다. 사용자가 이미지의 색상을 선택할 수있는 옵션을 제공하고자합니다. 예 here이미지 색상 변경

내 코드입니다 :

<?php 
header('Content-type: image/png'); 
$im = imagecreatefrompng('flower.png'); 
imagefilter($im, IMG_FILTER_GRAYSCALE); 
imagefilter($im, IMG_FILTER_CONTRAST, 255); 
imagefilter($im, IMG_FILTER_NEGATE); 
imagefilter($im, IMG_FILTER_NEGATE); 
imagefilter($im, IMG_FILTER_COLORIZE, 255, 0, 0); 
imagepng($im, 'flower1.png'); 
?> 

이 코드는 붉은 색으로 새로운 이미지를 생성되지만 나는 여기 이미지, 화면 만 표시를 만들려하지 않습니다.

예를 들어 사용자가 빨간색 버튼 이미지를 빨간색으로 변경하면 이미지가 빨간색으로 변경됩니다.

달성 가능합니까? 다른 방법으로 (자바 스크립트, 캔버스 또는 기타) 할 수 있습니까?

답변

0

같은 이미지를 요청할 수 있습니다 imagepng() 호출하면 그냥 이미지의 바이트를 출력하고 파일에 저장되지 않으므로 <img src=""> 안에이 스크립트의 URL을 사용할 수 있으며 잘 렌더링되어야합니다.

그러나 이미지가 다운로드 될 때마다 계산을 다시 실행해야하기 때문에 서버 리소스가 정말 낭비됩니다. 수정 팔레트가있는 경우 이미지를 미리 생성하거나 캐시를 저장하는 것이 좋습니다. 생성 된 버전.

사용자가 마주 보는 부분에 대해서는 사용자가 "빨간색"버튼을 클릭 할 때 javascript를 사용하여 브라우저 내부의 DOM을 변경하려고합니다. 이의 라인을 따라 뭔가 :

<img src="the_default_color.png" id="image"> 
<button id="make_it_red">Make it red</button> 
<script> 
document.getElementById('make_it_red').onclick = function(){ 
    document.getElementById('image').src = 'path_to_your_image_generator_php_script.php'; 
}; 
</script> 

당신은 RGB 값으로 파라미터 PHP 스크립트를 만들 수도 있습니다, 그래서 당신은 모든 색상을 사용할 수 있습니다.

0

imagepng 출력됩니다 당신이 filename 매개 변수처럼 사용 해달라고 직접하면 파일 내용을 PNG로 : 두 번째 파일 이름 매개 변수를 생략하면

imagepng($im); 

및보다, 당신이

<img src="http://your-shost/yourimagescript.php" /> 
0

<?php 
echo '<img src="photo.php" height="42" width="42">'; 
?> 

(새로운 flower1.jpg을 만들지 않고) 새 파일에 사진 만보기를 만들 : photo.php

<?php 
header('Content-type: image/png'); 
$im = imagecreatefrompng('flower.png'); 
imagefilter($im, IMG_FILTER_GRAYSCALE); 
imagefilter($im, IMG_FILTER_CONTRAST, 255); 
imagefilter($im, IMG_FILTER_NEGATE); 
imagefilter($im, IMG_FILTER_NEGATE); 
imagefilter($im, IMG_FILTER_COLORIZE, 255,0, 0); 
imagejpeg($im); 
imagedestroy($im); 
?>