PHP:图像不会在指定路径保存

时间:2014-09-12 14:52:31

标签: php

我使用以下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中指定的目录。有没有人知道为什么?也许有人知道需要在这里使用的一些额外代码。

2 个答案:

答案 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