imagecopyresampled 似乎没有执行
imagecopyresampled Does not seem to be Executing
我已经被这个问题拖了好几天了
我有这段代码,AJAX 使用有效的 link 查询了来自他们 API 的 Pixabay 图片。然后将其调整为 640x420 以适应站点周围的图像容器。该网站调整它的大小,保存它,然后 returns UUID 到 AJAX。问题 似乎 源于 imageresizeresampled 未执行。创建新图像并将其保存到要保存的变量中,但不会被调整大小的副本覆盖。
<?php
//user authentication would go here
//loading shared API would go here
$q = $_REQUEST['q'];
//other use cases for this API would go here
if($q=="getImage") {
$pixabay = $_REQUEST['link'];
$url = gen_uuid();
$suffix = $_SERVER['DOCUMENT_ROOT']."/temp/";
$filename = $suffix.$url.".jpg";
$image = file_get_contents($pixabay);
file_put_contents($filename, $image);
$source_image_tmp = imagecreatefromjpeg($filename);
$source_image = imagecreatetruecolor(imagesx($source_image_tmp),imagesy($source_image_tmp));
imagecopy($source_image,$source_image_tmp,0,0,0,0,imagesx($source_image_tmp),imagesy($source_image_tmp));
$origx = imagesx($source_image);
$origy = imagesy($source_image);
$dest_imagex = 640;
$dest_imagey = 420;
$dest_image = imagecreatetruecolor($dest_imagex, $dest_imagey);
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, $dest_imagex, $dest_imagey, $source_imagex, $source_imagey);
imagejpeg($dest_image, $filename);
die($url);
}
?>
据我所知,$dest_image 已创建,但从未被 imagecopyresampled 覆盖,因此它只是 returns 一个黑色的 640x420 框。没有返回 PHP 错误,据我所知服务器应该支持它。
我的问题是:我正在调用不存在的变量。我不知道这是怎么连续几天逃避我的,但事实就是如此,现在它完美地工作了。
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, $dest_imagex, $dest_imagey, $source_imagex, $source_imagey);
成为
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, $dest_imagex, $dest_imagey, $origx, $origy);
其中 $source_imagex 和 $sourceimagey 变成 $origx 和 $origy
我已经被这个问题拖了好几天了
我有这段代码,AJAX 使用有效的 link 查询了来自他们 API 的 Pixabay 图片。然后将其调整为 640x420 以适应站点周围的图像容器。该网站调整它的大小,保存它,然后 returns UUID 到 AJAX。问题 似乎 源于 imageresizeresampled 未执行。创建新图像并将其保存到要保存的变量中,但不会被调整大小的副本覆盖。
<?php
//user authentication would go here
//loading shared API would go here
$q = $_REQUEST['q'];
//other use cases for this API would go here
if($q=="getImage") {
$pixabay = $_REQUEST['link'];
$url = gen_uuid();
$suffix = $_SERVER['DOCUMENT_ROOT']."/temp/";
$filename = $suffix.$url.".jpg";
$image = file_get_contents($pixabay);
file_put_contents($filename, $image);
$source_image_tmp = imagecreatefromjpeg($filename);
$source_image = imagecreatetruecolor(imagesx($source_image_tmp),imagesy($source_image_tmp));
imagecopy($source_image,$source_image_tmp,0,0,0,0,imagesx($source_image_tmp),imagesy($source_image_tmp));
$origx = imagesx($source_image);
$origy = imagesy($source_image);
$dest_imagex = 640;
$dest_imagey = 420;
$dest_image = imagecreatetruecolor($dest_imagex, $dest_imagey);
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, $dest_imagex, $dest_imagey, $source_imagex, $source_imagey);
imagejpeg($dest_image, $filename);
die($url);
}
?>
据我所知,$dest_image 已创建,但从未被 imagecopyresampled 覆盖,因此它只是 returns 一个黑色的 640x420 框。没有返回 PHP 错误,据我所知服务器应该支持它。
我的问题是:我正在调用不存在的变量。我不知道这是怎么连续几天逃避我的,但事实就是如此,现在它完美地工作了。
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, $dest_imagex, $dest_imagey, $source_imagex, $source_imagey);
成为
imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, $dest_imagex, $dest_imagey, $origx, $origy);
其中 $source_imagex 和 $sourceimagey 变成 $origx 和 $origy