php获取url图片,php获取远程图片url生成缩略图的方法

这是一个用于调整图片尺寸或生成缩略图的PHP函数。它首先检查图片是否存在,然后根据参数决定是调整尺寸还是生成缩略图。在调整尺寸时,保持比例缩放;在生成缩略图时,会根据宽高比进行裁剪。此外,函数还包含一个根据URL抓取并保存图片的功能。
摘要由CSDN通过智能技术生成

/**

*

*函数:调整图片尺寸或生成缩略图

*返回:True/False

*参数:

* $Image 需要调整的图片(含路径)

* $Dw=450 调整时最大宽度;缩略图时的绝对宽度

* $Dh=450 调整时最大高度;缩略图时的绝对高度

* $Type=1 1,调整尺寸; 2,生成缩略图

*/ bbs.it-home.org

$phtypes=array('img/gif', 'img/jpg', 'img/jpeg', 'img/bmp', 'img/pjpeg', 'img/x-png');

function compressImg($Image,$Dw,$Dh,$Type){

IF(!file_exists($Image)){

return false;

}

// 如果需要生成缩略图,则将原图拷贝一下重新给$Image赋值(生成缩略图操作)

// 当Type==1的时候,将不拷贝原图像文件,而是在原来的图像文件上重新生成缩小后的图像(调整尺寸操作)

IF($Type!=1){

copy($Image,str_replace(".","_x.",$Image));

$Image=str_replace(".","_x.",$Image);

}

// 取得文件的类型,根据不同的类型建立不同的对象

$ImgInfo=getimagesize($Image);

Switch($ImgInfo[2]){

case 1:

$Img =@imagecreatefromgif($Image);

break;

case 2:

$Img =@imagecreatefromjpeg($Image);

Break;

case 3:

$Img =@imagecreatefrompng($Image);

break;

}

// 如果对象没有创建成功,则说明非图片文件

IF(Empty($Img)){

// 如果是生成缩略图的时候出错,则需要删掉已经复制的文件

IF($Type!=1){

unlink($Image);

}

return false;

}

// 如果是执行调整尺寸操作则

IF($Type==1){

$w=ImagesX($Img);

$h=ImagesY($Img);

$width = $w;

$height = $h;

IF($width>$Dw){

$Par=$Dw/$width;

$width=$Dw;

$height=$height*$Par;

IF($height>$Dh){

$Par=$Dh/$height;

$height=$Dh;

$width=$width*$Par;

}

} ElseIF($height>$Dh) {

$Par=$Dh/$height;

$height=$Dh;

$width=$width*$Par;

IF($width>$Dw){

$Par=$Dw/$width;

$width=$Dw;

$height=$height*$Par;

}

} Else {

$width=$width;

$height=$height;

}

$nImg =ImageCreateTrueColor($width,$height);// 新建一个真彩色画布

ImageCopyReSampled($nImg,$Img,0,0,0,0,$width,$height,$w,$h);// 重采样拷贝部分图像并调整大小

ImageJpeg($nImg,$Image);// 以JPEG格式将图像输出到浏览器或文件

return true;

} Else {// 如果是执行生成缩略图操作则

$w=ImagesX($Img);

$h=ImagesY($Img);

$width = $w;

$height = $h;

$nImg =ImageCreateTrueColor($Dw,$Dh);

IF($h/$w>$Dh/$Dw){// 高比较大

$width=$Dw;

$height=$h*$Dw/$w;

$IntNH=$height-$Dh;

ImageCopyReSampled($nImg, $Img, 0, -$IntNH/1.8, 0, 0, $Dw, $height, $w, $h);

} Else {// 宽比较大

$height=$Dh;

$width=$w*$Dh/$h;

$IntNW=$width-$Dw;

ImageCopyReSampled($nImg, $Img,-$IntNW/1.8,0,0,0, $width, $Dh, $w, $h);

}

ImageJpeg($nImg,$Image);

return true;

}

};

/**

*根据url获取服务器上的图片

*$url服务器上图片路径 $filename文件名

*/

function GrabImage($url,$filename="") {

if($url=="") return false;

if($filename=="") {

$ext=strrchr($url,".");

if($ext!=".gif" && $ext!=".jpg" && $ext!=".png")

return false;

$filename=date("YmdHis").$ext;

}

ob_start();

readfile($url);

$img = ob_get_contents();

ob_end_clean();

$size = strlen($img);

$fp2=@fopen($filename, "a");

fwrite($fp2,$img);

fclose($fp2);

return $filename;

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值