我的缩略图功能无法正常工作

时间:2017-11-07 05:04:57

标签: php

当此代码运行时,当假设在表单上的表格单元格内显示缩略图时,浏览器屏幕变为黑色,中间有灰色和白色方格的正方形。

function createThumb( $imageUrl, $thumbWidth ) 
{ 

// load image and get image size
$img = imagecreatefromjpeg( $imageUrl );
$width = imagesx( $img );
$height = imagesy( $img );

// calculate thumbnail size
$new_width = $thumbWidth;
$new_height = floor( $height * ( $thumbWidth / $width ) );

// create a new temporary image
$tmp_img = imagecreatetruecolor( $new_width, $new_height );

// copy and resize old image into new image 
imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

// display thumbnail
header("Content-type:image/jpeg");
imagejpeg( $tmp_img,$imageUrl,80);
};

调用代码的行是

<td >
<?php echo createThumb("CoffeeReg.jpg",75)?>
</td>

我还没有找到任何正常的语法错误,并且在通过语法检查程序时代码甚至会变回干净,这让我相信它是我的逻辑问题,我使用内置的功能不正确或我搞砸了我试图显示新缩略图的方式只有我缺乏exp我不知道我哪里出错了。我需要知道我做错了什么,所以我可以从这个错误中吸取教训。

1 个答案:

答案 0 :(得分:0)

好的,经过几个小时调试Majid提供的代码,当我试图帮助我理解我的代码出错时,我发现制作他正在使用的代码所需的唯一事情是添加这两个第二个php文件末尾的代码行,如下所示...

<?php
$imageUrl  = $_GET['file_name'];
$thumbWidth = $_GET['thumb_width']; 

// load image and get image size
$mainImage = imagecreatefromjpeg( $imageUrl );
$mainwidth = imagesx( $mainImage );
$mainheight = imagesy( $mainImage );

// calculate thumbnail size
$thumbWidth = intval($mainwidth/4);
$thumbHeight = intval($mainheight/4);;

// create a new temporary image
$tmp_img = imagecreatetruecolor( $thumbWidth, $thumbHeight );

// copy and resize old image into new image 
imagecopyresampled( $tmp_img, $mainImage, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $mainwidth, $mainheight );

// display thumbnail
header("Content-type:image/jpeg");

//Also had to remove the second and third argument from this function
imagejpeg( $tmp_img);



 //these following two lines here is what was missing
 imagedestroy(tmp_img);
 imagedestroy(mainImage);
 ?>

所以我想我们必须清除缩略图代码的图像变量,否则它会在运行时破坏它。不知道为什么还需要从imagejpeg函数中删除两个参数,但是我的教科书中提到了它,所以我尝试了它,现在通过这些更改,这段代码可以正常工作。感谢Majid的所有帮助,如果你的帖子还在这里,那么你可以通过投票和最佳答案得到充分的信任。