我使用以下php脚本处理图片上传:
// receive image data
$imgUrl = $_POST['imgUrl'];
$imgInitW = $_POST['imgInitW'];
$imgInitH = $_POST['imgInitH'];
$imgW = $_POST['imgW'];
$imgH = $_POST['imgH'];
$imgY1 = $_POST['imgY1'];
$imgX1 = $_POST['imgX1'];
$cropW = $_POST['cropW'];
$cropH = $_POST['cropH'];
// set image quality
$jpeg_quality = 100;
// define output name
$output_filename = "uploads/users/croppedImg_".rand();
// make sure only specific types of images get uploaded
$what = getimagesize($imgUrl);
// get extension of image url
$imgUrlParts = explode(".", $imgUrl);
$imgExtension = end($imgUrlParts);
switch(strtolower($imgExtension)) {
case 'png':
$img_r = imagecreatefrompng($imgUrl);
$source_image = imagecreatefrompng($imgUrl);
$type = '.png';
break;
case 'jpeg':
case 'jpg':
$img_r = imagecreatefromjpeg($imgUrl);
$source_image = imagecreatefromjpeg($imgUrl);
$type = '.jpeg';
break;
case 'gif':
$img_r = imagecreatefromgif($imgUrl);
$source_image = imagecreatefromgif($imgUrl);
$type = '.gif';
break;
default: die('image type not supported');
}
$resizedImage = imagecreatetruecolor($imgW, $imgH);
imagecopyresampled($resizedImage, $source_image, 0, 0, 0, 0, $imgW, $imgH, $imgInitW, $imgInitH);
$dest_image = imagecreatetruecolor($cropW, $cropH);
imagecopyresampled($dest_image, $resizedImage, 0, 0, $imgX1, $imgY1, $cropW, $cropH, $cropW, $cropH);
imagejpeg($dest_image, $output_filename.$type, $jpeg_quality);
$response = array(
"status" => 'success',
"url" => $output_filename.$type
);
print json_encode($response);
我的问题是图片永远不会到达$ output_filename中指定的目录。有没有人知道为什么?也许有人知道需要在这里使用的一些额外代码。
答案 0 :(得分:0)
首先确保您已启用错误报告,以查看是否存在一些错误:
// Add these to the top of your php script if you can't turn it on in php.ini
error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
然后我会检查图像是否正确创建。为此,您可以使用imagejpeg
替换NULL
中的filename参数,以将图像直接输出到浏览器。如果它正在工作,那么它可能是权限问题。将输出位置作为绝对路径,并使用固定文件名进行调试。
如果仍然无效,请发布显示的任何错误。
答案 1 :(得分:0)
请使用可用的插件
,而不是从头创建代码一个易于使用的插件,easyphpthumbnail下面是一个链接 http://www.mywebmymail.com/?q=content/easyphpthumbnail-class