2012-10-15 4 views
2

시작하기 전에 나는 PHP 멍청이임을 주목하고 싶습니다. 내가하고 싶은 일은 PNG 이미지를 한 가지 색으로 채색하는 것입니다. 따라서 모든 투명 픽셀은 투명하게 유지되고 모든 불투명 픽셀은 해당 색상이됩니다. 이 답변에 대한 여러 사이트를 검색했지만 어떤 이유로 내가 원하는 것을 찾을 수 없습니다. 기본적으로PHP : PNG tinitng (1 color)

<?php 
header('Content-Type: image/png'); 

$color = $_GET['color']; 
$im = imagecreatefrompng($_GET['img']); 
$width = imagesx($im); 
$height = imagesy($im); 
$imn = imagecreatetruecolor($width, $height); 
imagealphablending($imn,false); 
$col=imagecolorallocatealpha($imn,255,255,255,127); 
imagesavealpha($imn,true); 
imagefilledrectangle($imn,0,0,$width,$height,$col); 
imagealphablending($imn,true); 
imagecopy($imn, $im, 0, 0, 0, 0, $width, $height); 
imagefilter($imn, IMG_FILTER_GRAYSCALE); 


if ($color[0] == '#') 
$color = substr($color, 1); 

if (strlen($color) == 6) 
$r = $color[0].$color[1]; 
$g = $color[2].$color[3]; 
$b = $color[4].$color[5]; 

$r = hexdec($r); 
$g = hexdec($g); 
$b = hexdec($b); 

imagefilter($imn, IMG_FILTER_COLORIZE, $r, $g, $b); 

imagepng($imn); 
imagedestroy($imn); 

?> 

내가 여기에 볼 수 있습니다 원하는 완벽한 예 : 여기

은 내 첫 번째 시도는 내가 찾은 다른 예를 기반으로합니다. 유일한 변경 사항은 검은 색 대신 사용자가 지정한 색상으로 변환되기를 원합니다. Convert non-transparent pixels to black

당신에게

=============================== 2012년 10월 17일 업데이트 감사

그것은 일
<?php 

$source = "test.png"; 
$temp = "temp.png"; 
$color = "red"; 
$final = "FINAL.png"; 

exec("convert $source -alpha extract -threshold 0 -negate -transparent white $temp"); 
exec("convert $temp -fill $color -opaque black $final"); 
?> 

는, 그러나 작은 문제가있다 : 그래서 xception의 답변에 따라

, 여기에 내가 그의 스크립트를 실행하는 데 사용되는 코드입니다. 아래 스크린 샷에 표시된 것처럼 들쭉날쭉 한 가장자리가 있습니다. 이미지를 부드럽게하는 방법에 대한 아이디어가 있으므로 BEFORE 스크린 샷처럼 멋지게 보입니까?

하기 전에 :

BEFORE

AFTER :

AFTER

답변

1

당신이 가리키는 링크를 기반으로 2 단계 예 :

convert <source> -alpha extract -threshold 0 -negate -transparent white <tmp> 
convert <tmp> -fill red -opaque black <destination> 

교체 <source>, <tmp>, <destination> 및 적절한 파일 이름은 red을 원하는 색으로 바꿉니다.

편집 : 질문 작성자에 의해 발견 짧은 버전 : 주석에 대한

exec("convert $source -threshold 100% +level-colors '#00FF00', $final"); 
+0

감사합니다. 그래서 저는 PHP를 처음 사용하고 ImageMagick에 익숙하지 않아 위 예제를 어떻게 사용하는지 확신 할 수 없습니다. 나에게 완전한 모범을 보여줄 수 있다고 생각하니? 또한, 내가 올바르게 게시 한 것을 읽는다면, 그 스크립트는 그것을 표시하는 대신 서버에 이미지를 생성 할 것입니다. 나는 이미지를 처리하고 변경 사항을 표시하는 첫 번째 예제와 같은 것을 필요로합니다. –

+0

PHP에서 imagemagick으로 이미지를 처리하는 것이 가능합니다. 그러나 imagick 확장자가 필요합니다. 그러나이 예제를 imagick 예제로 바꿀 시간이 없습니다. 함수에 대한 설명서가 매우 나쁘기 때문에 - 함수 및 매개 변수 이름 제외 내가 마지막으로 사용한 것은 아무것도 기록되어 있지 않았기 때문에, 내가 원했던 것을 어떻게하는지 알아 내려고 하루가 걸렸다. 내가 준 커맨드 라인에서 각 매개 변수에 해당하는 PHP imagick 코드로 인터넷 검색을 시도해보십시오. – xception

+0

고마워요, 제가 살펴보고 그것을 가지고 예를 게시 할 것입니다. –