php在服务器上创建图像的缩略图

时间:2015-10-16 10:41:32

标签: php image thumbnails

有人可以帮我找出为什么这个功能不起作用。

给予该功能的参数是:
$ pathToImages是一个以$ _SERVER开头的完整路径[' DOCUMENT_ROOT']
$ pathToThumbs是一个URL,它实际上是一个名为" thumb"的子文件夹。在$ pathToImages内部

function createThumbs($pathToImages, $pathToThumbs) {
    $dir = opendir($pathToImages);
    while (false !== ($fname = readdir($dir))) {
        if (is_file($pathToImages . $fname)) {
            $info = pathinfo($pathToImages . $fname);
            if ( strtolower($info['extension']) == 'jpg' || strtolower($info['extension']) == 'jpeg' ) {
                list($width, $height, $type) = getimagesize($pathToImages . $fname);
                switch ($type) {
                    case 1: $img = imagecreatefromgif($pathToImages . $fname);
                    break;
                    case 2: $img = imagecreatefromjpeg($pathToImages . $fname);
                    break;
                    case 3: $img = imagecreatefrompng($pathToImages . $fname);
                    break;
                    case 6: $img = imagecreatefromwbmp($pathToImages . $fname);
                    break;
                    default:  $img = imagecreatefromjpeg($pathToImages . $fname);
                };
                $maxWidth = 164;
                $maxHeight = 164;
                if ($width > $height) {
                    $new_width = $maxWidth;
                    $new_height = floor($height * ($maxWidth / $imgw));
                } else {
                    $new_height = $maxHeight;
                    $new_width = floor($width * ($maxHeight / $height));
                };
                $tmp_img = imagecreatetruecolor($new_width, $new_height);
                // imagecopyresized($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
                imagecopyresampled($tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
                imagejpeg($tmp_img, $pathToThumbs . $fname);
                imagedestroy($tmp_img);
                imagedestroy($img);
            };
        };
    };
    closedir($dir);
}

1 个答案:

答案 0 :(得分:0)

功能对我来说没问题。 也许拇指的目录不是由PHP用户创建的,因此您的脚本无权在目录中写入数据。 尝试使用

创建PHP的/ thumbs目录
mkdir($pathToThumbs); 

并使用

chmod($pathToThumbs,755); 

给予正确的权利。

否则请提供错误消息。 ;)