失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > PHP 获取网络图片资源并保存

PHP 获取网络图片资源并保存

时间:2021-12-22 18:22:50

相关推荐

PHP 获取网络图片资源并保存

☹ 背景:

在进行后台图片资源整合时,我发现有需要获取网络图片的需要,简单的要求就是,先获取某个资源图片,然后由代PHP代码实现剪切水印等操作,最后进行上传服务器…

☺.框架 :ThinkPHP3.2.3(越来越不想玩这个低版本了)

☺ 探索:

首先,我所做提供的代码也是从道友们那里获得的,然后经过测试并完善备注,希望能对小白们有所帮助再者,个人发现,没有设置过防盗链的图片资源是可以获取的,要保证你的图片资源服务器是可以访问哦并且,测试发现,如果报错的图片重名,不生效,建议使用随机码或时间戳命名

☹ 源代码:

具体参数解释及使用方法请看代码备注:

/*** TODO PHP 从网络上获取图片 并保存* @param $imgFromUrl 图片的网络路径,支持本地。但是图片限制盗链的可能不行*本地举例:'Public/images/from.png'*网络图片示例:'/timg?image&quality=80&size=b9999_10000&sec=1538199326261&di=1e0eec15686209c2d456d554690327c1&imgtype=0&src=http%3A%2F%%2Fuploads%2Fitem%2F10%2F13%2F1013110308_QtVC8.thumb.700_0.jpeg'* @param $newFileName 此为重命名并进行保存的图片地址* @return bool|string 如果$filename不为空,方可进行下载并返回新图片地址** 使用 举例:*$img = saveImageFromHttp('Public/images/from.png',"Public/images/save".time().".png");*echo $img;*/function saveImageFromHttp($imgFromUrl,$newFileName) {//如果$imgFromUrl地址为空,直接退出即可if ($imgFromUrl == "") {return false;}//如果没有指定新的文件名if ($newFileName == "") {//得到 $imgFromUrl 的图片格式$ext = strrchr($imgFromUrl, ".");//如果图片格式不为.gif 或者.jpg .png,直接退出即可if ($ext != ".gif" && $ext != ".jpg" && $ext != 'png'){return false;}$newFileName = date("dMYHis") . $ext;//用天月面时分秒来命名新的文件名}ob_start();//打开输出readfile($imgFromUrl);//输出图片文件$img = ob_get_contents();//得到浏览器输出ob_end_clean();//清除输出并关闭//$size = strlen($img);//得到图片大小$fp2 = @fopen($newFileName, "a");fwrite($fp2, $img);//向当前目录写入图片文件,并重新命名fclose($fp2);return $newFileName;//返回新的文件名}

测试运行,实现效果截图:

☹ 补充:

有的功能需求中,可以将图片上传后,再将原来的图片资源删掉即可,以减少资源你的浪费,可参考简单代码

/*** PHP 删除指定的图片* @param $filename 目标图片路径*/function deleteServerImg($filename){if (file_exists($filename)) {//检查图片文件是否存在$result = @unlink($filename);if ($result == true) {echo '删除成功';} else {echo '无法删除';}} else {echo '找不到图片文件';}}

再提供一个代码较少的方法,获取网络图片:

/*** 该方法比较消耗服务器资源,慎用!* @param $imgFromUrl 图片资源来源 * 举例:*'/up/-8/081209093194027.jpg';*'/mmopen/vi_32/DYAIOgq83eqXCNxwqzGzBvc7LibqmRtBqrxHdTtLpZafVsENVrHrHPyTQ9qEQe00XFlu6DFrKGFx6zZ5jIh4LdA/132'* @param $newFileUrl 新文件存放目录* @return string 返回新文件名*/function getImgFromServer($imgFromUrl, $newFileUrl){$img_file = file_get_contents($imgFromUrl);$img_content = base64_encode($img_file);$type = 'jpeg';//得到图片类型 png?jpg?gif?$new_file = $newFileUrl.'/'.time().'.'.$type;if (file_put_contents($new_file, base64_decode($img_content))) {return $new_file;}else{return false;}}

如果觉得《PHP 获取网络图片资源并保存》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。