PHP에서 imagecopymerge 함수로 뭔가 이상한 일이 일어나고 있습니다. 이 두 PNG 파일을 다른 페이지의 맨 위에 병합하려고합니다. 병합 될 위치는 html 페이지의 드래그 가능한 캔버스에서 동적으로 가져옵니다. 게시 양식을 통해 'x'와 'y'좌표를 제출하여 대상 이미지의 병합 (PHP 사용자에 따라 $dst_x
및 $dst_y
매개 변수)을 내 PHP 파일에 병합합니다.PHP는 imagecopymerge()로 두 개의 이미지를 병합합니다.
함수의 실제 호출에서이 두 매개 변수를 동적으로 설정하려고하면 결과 이미지가 브라우저로 제대로 덤프되지만 저장된 이미지를 마우스 오른쪽 단추로 클릭하면 ... 소스 (병합) 이미지 ($src_img
)는 (0,0) 좌표로 시작하고 지정한 것 (또는 오히려 사용자)이 아닙니다. 전체 웹 페이지 (Ctrl + S 또는 파일 ... 저장)로 저장하려고하면 올바르게 저장됩니다 (즉 $src_image
은 지정된 x
및 y
좌표로 시작 함).
그러나 x 좌표와 y 좌표를 하드 코딩하면 발생하지 않으며 모든 방법 (데스크톱, 파일, 끌어서 놓기 ... 저장 ... 등)을 통해 저장할 수 있습니다.) 브라우저에 표시되고 정확하고 일관되게 저장됩니다. 나는 파이어 폭스가이 일을 왜 모르겠어요
<?php
if(isset($_POST)){
// Create image instances
$src = imagecreatefrompng('hello.png');
$dest = imagecreatefrompng('./img/image2.png');
imagealphablending($dest, true);
imagesavealpha($dest, true);
// Copy and merge
$posX = (int)(isset($_POST['x']) ? $_POST['x'] : null);
$posY = (int)(isset($_POST['y']) ? $_POST['y'] : null);
imagecopymerge($dest, $src, $posX, $posY, 0, 0, 200, 200, 100); //dynamic setting
header("Content-Disposition: inline; filename=\"rendered.png\"");
header('Content-Type: image/png');
// Output and free from memory
imagepng($dest);
imagedestroy($src);
imagedestroy($dest);
}
?>
하지만 난 어떤 도움을 주셔서 감사합니다 :
이
내 코드입니다.