2013-03-27 13 views
2

광산 프로젝트에서 JCrop을 사용하고 있습니다 (사용자가 얼굴을 자르려고합니다). & 소스 이미지를 PHP 처리기로 보냅니다. 흐름은 다음과 같아야합니다.받은 좌표에 따라 핸들러에서 이미지를 잘라 내고 ImageCreateTrueColor()으로 만든 빈 레이아웃 위에 새로 만든 이미지 (내 경우에는 90x90)를 넣으려면 imagecopy()을 사용합니다. 지금까지는 잘 작동하지만 다음 단계는 투명 섹션이있는 png 이미지를로드해야합니다. (내가 충분히 명확하게 설명하기를 바란다.) 그것은 작곡 된 영역을 가진 이전의 레이아웃과 동일한 너비와 높이를 가지고있다. 마지막 단계는 다시 imagecopy()을 사용하여 레이아웃 위에 png를 놓고 최종 결과로 사용자가 만든 자르기로 덮힌 투명 섹션이있는 템플릿을 갖게됩니다. 여기 내 코드는 다음과 같습니다.PHP-GD Png 투명 이미지가 검은 색으로 변합니다.

$targ_w = $targ_h = 90; 
$jpeg_quality = 100; 
$src = $_POST['s']; 
$img_r = imagecreatefromjpeg($src); 
$dst_r = ImageCreateTrueColor($targ_w, $targ_h); 
imagecopyresampled($dst_r,$img_r,0,0,$_POST['x'],$_POST['y'], 
$targ_w,$targ_h,$_POST['w'],$_POST['h']); 
$layout = ImageCreateTrueColor(459,683); 
imagecopy($layout, $dst_r, 263, 249, 0, 0, 90, 90); 
$template = 'template.png'; 
$src_r = imagecreatefrompng($template); 
$background = imagecolorallocate($src_r, 255, 255, 255); 
imagecolortransparent($src_r, $background); 
imagealphablending($src_r, false); 
imagesavealpha($src_r, true); 
imagecopy($layout, $src_r, 0, 0, 0, 0, 459, 683); 
header('Content-type: image/png'); 
imagepng($src_r); 

나는 온라인에서 발견 된 많은 것을 시도했지만 아무것도 작동하지 않습니다. 편집 : 문제는 투명 섹션이 자른 얼굴이 아닌 검은 색이된다는 것입니다. 정말 조언이 필요해. 미리 감사드립니다.

+1

당신이 $의 src_r에 알파 블렌딩을 사용하지 않도록 설정하고 어떤 이유입니까? –

+0

이전에 알파 블렌딩을 시도했지만 여전히 작동하지 않습니다. –

답변

관련 문제