好的,我已经有一段时间了,需要一些帮助。 我有一个3000+图像的目录,我需要缩略图,我不能完全得到它的PHP:(
我从来没有使用php创建缩略图,所以这对我来说是新的,我发现一些脚本在您将图像上传到服务器时创建缩略图,我将从此处开始执行此操作。
图像位置作为URL存储在mysql数据库中。 我需要它来创建图像的缩略图,当然,使用缩略图URL更新数据库。
这是我用来整合我的需求的脚本:
http://net.tutsplus.com/articles/news/how-to-dynamically-create-thumbnails/
我使用完全相同的functions.php& config.php文件。
这是我得到的:
$ row ['image']是每张图片的位置:http://www.url.com/images/image.jpg
$ filename我正在剥离网址所以它只是提供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'");
}
?>
我正在为$ filename提供一个正确的文件名,并将图像源提供给$ source,所以它应该正常工作..
这是functions.php中的createThumbnail函数:
<?
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
有人可以帮助我吗?
答案 0 :(得分:2)
问题似乎是您指定要处理的图像文件的路径在脚本位置无效。
示例中的文件为images/fullsized/image.jpg
,相关错误为failed to open stream: No such file or directory in functions.php on line 7
在告诉imagecreatefromjpeg
要打开的文件时,您需要使用绝对路径,例如$_SERVER['DOCUMENT_ROOT'] . '/images/fullsized/image.jpg'
或/home/yoursite/public_html/images/fullsized/image.jpg
。
完整路径或绝对路径是指向相同路径的路径 在一个文件系统上的位置,无论工作目录或 组合路径。它通常是在引用根时编写的 。目录
所有其他错误消息只是图像无法打开的副作用。由于路径不正确,因此没有创建GD图像,因此在其上调用的函数将不起作用。