【发布时间】:2012-08-27 02:59:12
【问题描述】:
我很难理解这个函数和包含的代码的问题。
我可以告诉它所有密集的目的都应该没有问题。
我正在运行 GD 库 2.034,这是我正在执行的代码:
function createthumb($name,$filename,$new_w,$new_h){
$system=explode('.',$name);
if (preg_match('/jpg|jpeg/',$system[1])){
$src_img=imagecreatefromjpeg($name);
}
if (preg_match('/png/',$system[1])){
$src_img=imagecreatefrompng($name);
}
//sizing
$old_x=imageSX($src_img);
$old_y=imageSY($src_img);
if ($old_x > $old_y) {
$thumb_w=$new_w;
$thumb_h=$old_y*($new_h/$old_x);
}
if ($old_x < $old_y) {
$thumb_w=$old_x*($new_w/$old_y);
$thumb_h=$new_h;
}
if ($old_x == $old_y) {
$thumb_w=$new_w; $thumb_h=$new_h;
}
//keep colours
$dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
//rebuild image
if (preg_match("/png/",$system[1])) {
imagepng($dst_img,$filename);
}
else {
imagejpeg($dst_img,$filename);
}
imagedestroy($dst_img);
imagedestroy($src_img);
}
然后执行如下:
$filenameresize = strtolower($_FILES['pic']['name']);
$mkfilename = time() . strrchr($filenameresize, '.');
$newfilename = $imagepath . $mkfilename;
createthumb($newfilename, $imagepath . "/thumbs/tn_" . $mkfilename,100,100);
回响
$newfilename如果它在 createthumb 函数之前回显,则给出它的名称,但如果在之后回显则不会产生。
我错过了什么?
【问题讨论】:
-
错误消息说“没有有效的图像资源”。也许文件扩展名中的大写字母?然后你永远不会去'imagecreatefrom...'函数,因为检查只针对小写扩展。
-
这是个主意,我来了!
-
已编辑问题以反映无效的更改,另外我检查了文件名前后都为小写。我在想这可能有帮助吗? $dimensions = getimagesize($_FILES["pic"]["tmp_name"]);
标签: php function gd thumbnails