【发布时间】:2014-08-21 07:54:36
【问题描述】:
我在 PHP 中的 imagecopymerge 函数发生了一些非常奇怪的事情。我正在尝试将这两个 png 文件合并到另一个之上,并且这些文件将被合并的位置是从 html 页面中的可拖动画布动态获得的。通过一个帖子表单,我将我希望在目标图像上发生合并的“x”和“y”坐标(根据 PHP Man. 的$dst_x 和$dst_y 参数)提交到我的 php 文件。
当我尝试在函数的实际调用中动态设置这两个参数时,生成的图像会正确转储到浏览器中,但是当我尝试右键单击 Save As... 时,在保存的图像上,源(合并的)图像($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 为何这样做,但我很感激任何帮助。
【问题讨论】:
标签: php html firefox image-processing gd