在PHP中我的imagecopymerge函數有一些非常奇怪的事情發生。我試圖將這兩個PNG文件合併到一起,並且這些文件將被合併的位置是從HTML頁面中的可拖動畫布動態獲取的。通過發佈表單,我提交'x'和'y'座標,我希望在目標圖像上進行合併(根據PHP Man提供$dst_x
和$dst_y
參數)。PHP與imagecopymerge()合併兩個圖像()
當我嘗試在函數的實際調用中動態設置這兩個參數時,生成的圖像被正確轉儲到瀏覽器中,但是當我嘗試右鍵單擊另存爲...時,在保存的圖像上,源(合併)圖像($src_img
)在(0,0)座標上開始,而不是在我指定的(或者說,用戶)上開始。如果我試圖將其保存爲整個網頁(Ctrl + S或File ... Save),則它將被正確保存(即$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);
}
?>
我不知道爲什麼Firefox是這樣做,但我感謝所有幫助。