PHP创建jpg文件| GD库不适用于JPG

时间:2016-06-07 10:56:36

标签: php jpeg gd

我正在关注本教程:Tutorial 在PHP脚本中,它使用GD库来移动和保存文件。 当我在我的本地WAMP服务器上使用它时,此脚本工作正常。 但是当我将它上传到我在HosHosting上的托管时却没有,当我使用JPEG或PNG文件时,它可以工作,但是当我使用.JPG文件时,它不起作用。

这是代码的一部分:

$sTempFileNameFirst = TEMPLATEPATH;
$sTempFileNameFirstSrc = get_bloginfo('template_directory');
$sTempFileNameLast = '/cache/' . md5(time().rand());
$sTempFileName = $sTempFileNameFirst . $sTempFileNameLast;
$sTempFileNameSrc = $sTempFileNameFirstSrc . $sTempFileNameLast;

// move uploaded file into cache folder
move_uploaded_file($_FILES['upload-image']['tmp_name'], $sTempFileName);

// change file permission to 644
@chmod($sTempFileName, 0644);

if (file_exists($sTempFileName) && filesize($sTempFileName) > 0) {
    $aSize = getimagesize($sTempFileName); // try to obtain image info
if (!$aSize) {
    @unlink($sTempFileName);
    return;
}

// check for image type
switch($aSize[2]) {
    case IMAGETYPE_JPEG:
        $sExt = '.jpg';
        echo("jpg");
        // create a new image from file
        $vImg = @imagecreatefromjpeg($sTempFileName);
    break;
    case IMAGETYPE_PNG:
        $sExt = '.png';
        // create a new image from file
        $vImg = @imagecreatefrompng($sTempFileName);
    break;
    default:
        @unlink($sTempFileName);
        echo("unlink");
    return;
}

echo("before truecolor");

// create a new true color image
$vDstImg = @imagecreatetruecolor( $iWidth, $iHeight ) or die ("can't open gd stream");
echo("after imagetruecolor");

// copy and resize part of an image with resampling
imagecopyresampled($vDstImg, $vImg, 0, 0, (int)$_POST['x1'], (int)$_POST['y1'], $iWidth, $iHeight, (int)$_POST['width'], (int)$_POST['height']);
echo("after resample");

// define a result image filename
//$sResultFileName = $sTempFileName . $sExt;
$sResultFileNameSrc = $sTempFileNameSrc . $sExt;
echo($sResultFileNameSrc);

// output image to file
imagejpeg($vDstImg, $sResultFileName, $iJpgQuality);
@unlink($sTempFileName);

return $sResultFileNameSrc;

正如你所看到的,我使用echo来查看它的工作原理和不工作的地方。因此,对于JPEG和PNG文件,每个代码都可以工作,但每当我使用JPG文件时,@ imagecreatetruecolor之前的回声都会起作用,但之后无效。所以问题是该功能不会执行。此功能后的“或死”部分也不起作用。

可能是什么问题? PHPINFO()表示已启用GD信息并已捆绑版本(2.1.0)

0 个答案:

没有答案