由于在上一篇的代码中的贴出的代码的截取图像会存在不足,经过本人的经心测试 把截取的算法修改了 特别贴出来 ,欢迎大家转载
以下是代码:
<?php
function scaleImage4($x,$y,$x2,$y2)
{
if($x/$y > $x2/$y2)
{
$r = $y/$y2;
$x = ceil($x*($y2/$y));
$y = $y2;
}
else
{
$r = $x/$x2;
$y = ceil($y *($x2/$x));
$x = $x2;
}
return array($x,$y);
}
function cropImage($srcPic,$width,$height)
{
$w = 0;
$x = 0;
$y = 0;
list($s_W, $s_H) = getimagesize($srcPic); //得到原图的大小
//echo "原图大小 w:$s_W H:$s_H </br>";
list($newX,$newY)=scaleImage4($s_W,$s_H,$width,$height); //根据原图的大小和要改变的大小计算出新的大小
//echo "算出来的大小 w:$newX H:$newY </br>";
//echo "要显示的大小 w:$width H:$height </br>";
$image_p = imagecreatetruecolor($width,$height);//对图像进行载剪
if($width/$height > $newX/$newY)
{
$x = ($newX-$width)/2;
$y = 0;
}
else
{
$y=ceil(($newY-$height)/4);
$x = 0;
}
//echo "坐标 x:$x y:$y </br>";
$image = imagecreatefromjpeg($srcPic);
imagecopyresampled($image_p,$image,0,0,$x,$y,$width,$height,$s_W,$s_H);
imagejpeg($image_p, null, 100);
imagedestroy($image_p);
}
$filename= $_GET['filename'];
$width = $_GET['width'];
$height = $_GET['height'];
$path="http://www.zhfy.com"; //图片来源地址 "/"
$src = $path.$filename;
header('Content-type: image/jpeg');
echo cropImage($src,$width,$height);
// 输出的头信息
?>
此代码可以直接在图片中请求 不在网站中生成图片,图片是中内存的中 ,如果您有其它需要请自行修改
使用方法:<img src="/thumbs.php?filename=111.jpg&width=110&height=250">';
转载于:https://my.oschina.net/myfirtyou/blog/624325