需求是这样的:原始图片的大小是不定的,类似800*600、1000*756,现有一个页面要以正方形(60*60)显示这些图片,注意:图片只能在内存处理,不能缩小后保存到本地磁盘。
解决办法:
html页面
<?php for($i=1;$i<=9;$i++){ $imgu=$fav['imgurl'.$i]; if(!empty($imgu)){ $miniimg=WWW_ROOT."miniimg.php?filename=".$imgu; ?> <img src="<?php echo $miniimg;?>" width="60px" height="60px"> <?php }}?>
其中$imgu表示图片的链接地址,如:http://m1.img.libdd.com/farm4/2013/0618/17/32D9A44D5B8415A3CBFB33D141F98F937603F219A0E75_580_911.JPEG
miniimg.php代码如下:
<?php $filename= $_GET['filename']; $width = 60; $height = 60; // Content type header('Content-type: image/jpeg'); // Get new dimensions list($x, $y) = getimagesize($filename); if($x>$y){ //图片宽大于高 $sx = abs(($y-$x)/2); $sy = 0; $thumbw = $y; $thumbh = $y; } else { //图片高大于等于宽 $sy = abs(($x-$y)/2); $sx = 0; $thumbw = $x; $thumbh = $x; } // Resample $image_p = imagecreatetruecolor($width, $height); $image = imagecreatefromjpeg($filename); imagecopyresampled($image_p, $image, 0, 0, $sx, $sy, $width, $height, $thumbw, $thumbh); // Output imagejpeg($image_p, null, 100); // Imagedestroy imagedestroy ($image_p);