使用php循环从目录创建缩略图

使用php循环从目录创建缩略图,php,mysql,thumbnails,Php,Mysql,Thumbnails,好的,我已经做了一段时间了,需要一些帮助。 我有一个包含3000多个图像的目录,我需要这些图像的缩略图,但我无法让php来完成这项工作:( 我从来没有用php制作过缩略图,所以这对我来说是新的,我发现了一些脚本,可以在您将图像上传到服务器时创建缩略图,我将从现在开始做这件事 图像位置作为URL存储在mysql数据库中。 我需要它来创建图像的缩略图,当然,用缩略图url更新数据库 这是我用来将我的需求整合到中的脚本: 我使用的是完全相同的functions.php和config.php文件 以下

好的,我已经做了一段时间了,需要一些帮助。 我有一个包含3000多个图像的目录,我需要这些图像的缩略图,但我无法让php来完成这项工作:(

我从来没有用php制作过缩略图,所以这对我来说是新的,我发现了一些脚本,可以在您将图像上传到服务器时创建缩略图,我将从现在开始做这件事

图像位置作为URL存储在mysql数据库中。 我需要它来创建图像的缩略图,当然,用缩略图url更新数据库

这是我用来将我的需求整合到中的脚本:

我使用的是完全相同的functions.php和config.php文件

以下是我得到的:
$row['image']是每个图像的位置,例如:
$filename我正在剥离url,因此它只提供image.jpg

<?php
    require 'config.php';  
    require 'functions.php';  
    require 'db.php';  
    $sql = mysql_query("SELECT * FROM pics");  
    while($row = mysql_fetch_array($sql, MYSQL_ASSOC)){  

        $filename = preg_replace('['.$url.']', '', $row['image']);              
        $source = $row['image'];

        createThumbnail($filename);

        $thumb_loc = $url . "images/thumbs/" . $filename;
        $id = $row['id'];
        mysql_query("UPDATE pics SET image_thumb = '$thumb_loc' WHERE id = '$id'");
    }
?>

有人能帮我一下吗?

问题似乎是您为要操作的图像文件指定的路径在脚本位置无效

示例中的文件是
images/fullsize/image.jpg
,相关错误是
无法打开流:第7行的functions.php中没有这样的文件或目录

告诉
imagecreatefromjpeg
要打开的文件时,您需要使用绝对路径,例如
$\u服务器['DOCUMENT\u ROOT']./images/fullsize/image.jpg'
/home/yoursite/public\u html/images/fullsize/image.jpg

完整路径或绝对路径是指向相同路径的路径 在一个文件系统上的位置,而不考虑工作目录或 组合路径。它通常是参照根来编写的 目录


所有其他错误消息都只是图像无法打开的副作用。由于路径不正确,因此未创建GD图像,因此对其调用的函数将无法工作。

是否收到任何错误?如果没有,是否启用了错误报告?是,我收到一些警告。警告:imagecreatefromjpeg(images/fullsize/image.jpg)[function.imagecreatefromjpeg]:无法打开流:第7行的functions.php中没有这样的文件或目录。基本上,它说您试图打开的文件不存在。也许您应该尝试指定一个完整的路径,从根开始。图像确实存在于循环所服务的url处。我想这与图像位于url上而不是url上有关文件上传。有没有办法从url抓取图像,将其临时保存并作为文件提供,创建缩略图并删除临时图像?此外,如果您说明如何创建缩略图()声明。好的,也许不是。我已经删除了move_uploaded_文件,因为我没有上载或移动任何内容。抱歉,我更新了帖子。@DavidIvanov我现在更新了答案以解决实际问题。好了,@drew010,他说了问题所在。不知何故,您没有将现有图像指定给
imagecreatefromjpeg()
。也许您可以将
$path\u回传到\u image\u目录。$filename
以查看您实际为该功能提供了什么。@Zombaya从错误消息的外观来看,
images/fullsize/image.jpg
是为该函数提供的,因为它是数据库中包含的路径。需要对此部分进行调整Icul脚本。@Zombaya将$path\u回送到\u image\u目录。$filename产生“images/fullsize/image.jpg”
<?
function createThumbnail($filename) {

    require 'config.php';

    if(preg_match('/[.](jpg)$/', $filename)) {
        $im = imagecreatefromjpeg($path_to_image_directory . $filename);
    } else if (preg_match('/[.](gif)$/', $filename)) {
        $im = imagecreatefromgif($path_to_image_directory . $filename);
    } else if (preg_match('/[.](png)$/', $filename)) {
        $im = imagecreatefrompng($path_to_image_directory . $filename);
    }

    $ox = imagesx($im);
    $oy = imagesy($im);

    $nx = $final_width_of_image;
    $ny = $final_height_of_image;

    $nm = imagecreatetruecolor($nx, $ny);

    imagecopyresized($nm, $im, 0,0,0,0,$nx,$ny,$ox,$oy);

    if(!file_exists($path_to_thumbs_directory)) {
      if(!mkdir($path_to_thumbs_directory)) {
           die("There was a problem. Please try again!");
      }
       }

    imagejpeg($nm, $path_to_thumbs_directory . $filename);
    $tn = '<img src="' . $path_to_thumbs_directory . $filename . '" alt="image" />';
    $tn .= '<br />Congratulations. Your file has been successfully uploaded, and a    thumbnail has been created.';
    echo $tn;
}
?>
Warning: imagecreatefromjpeg(images/fullsized/image.jpg) [function.imagecreatefromjpeg]: failed to open stream: No such file or directory in functions.php on line 7

Warning: imagesx(): supplied argument is not a valid Image resource in functions.php on line 14

Warning: imagesy(): supplied argument is not a valid Image resource in functions.php on line 15

Warning: Division by zero in functions.php on line 18

Warning: imagecreatetruecolor() [function.imagecreatetruecolor]: Invalid image dimensions in functions.php on line 20

Warning: imagecopyresized(): supplied argument is not a valid Image resource in functions.php on line 22

Warning: imagejpeg(): supplied argument is not a valid Image resource in functions.php on line 30