文档章节

php完美实现下载远程图片保存到本地(保存微信头像)

林夏夕
 林夏夕
发布于 2017/05/13 13:45
字数 280
阅读 163
收藏 0
/**
* php完美实现下载远程图片保存到本地
* @param: 文件url,保存文件目录,保存文件名称,使用的下载方式	当保存文件名称为空时则使用远程文件原来的名称
* @date: 2017-05-13
*/
function getimage($url,$save_dir='',$filename='',$type=0){
	if(trim($url)==''){
		return array('file_name'=>'','save_path'=>'','error'=>1);
	}
	if(trim($save_dir)==''){
		$save_dir='./';
	}
	if(trim($filename)==''){//保存文件名
		$ext=strrchr($url,'.');
		if($ext!='.gif'&&$ext!='.jpg'){
			return array('file_name'=>'','save_path'=>'','error'=>3);
		}
		$filename=time().$ext;
	}
	if(0!==strrpos($save_dir,'/')){
		$save_dir.='/';
	}
	//创建保存目录
	if(!file_exists($save_dir)&&!mkdir($save_dir,0777,true)){
		return array('file_name'=>'','save_path'=>'','error'=>5);
	}

	//获取远程文件所采用的方法
	if($type){
		$ch=curl_init();
		$timeout=5;
		curl_setopt($ch,CURLOPT_URL,$url);
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
		curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
		$img=curl_exec($ch);
		curl_close($ch);

	}else{
		ob_start();
		readfile($url);
		$img=ob_get_contents();
		ob_end_clean();
	}
	//$size=strlen($img);
	//文件大小

	$fp2=@fopen($save_dir.$filename,'a');
	fwrite($fp2,$img);
	fclose($fp2);
	unset($img,$url);
	return array('file_name'=>$filename,'save_path'=>$save_dir.$filename,'error'=>0);
}

在调用上面方法时:(其中getimage方法已被存放在公共函数中,可直接调用。$headimgurl为微信头像地址)

$headimg = './Uploads/Picture/uid2/headimg/'.$openid.'.jpg';
$content = getimage($headimgurl,'./Uploads/Picture/uid2/headimg/',$openid.'.jpg',1);

 

© 著作权归作者所有

共有 人打赏支持
林夏夕
粉丝 2
博文 46
码字总数 28794
作品 0
南开
微信小程序--通过canvas生成图片并保存到本地

前言 需求场景:我们知道,微信小程序可以分享给好友或者微信群,不能分享到朋友圈,那分享到朋友圈就需要特殊处理一下,这里我们把小程序和结合起来使用,生成自定义图片并保存到本地。 代码...

real__隔壁老胖兔
09/17
0
0
一次 H5 「保存页面为图片」 的踩坑之旅

1. 需求 最近丁香医生的产品大佬又双叒叕搞事情,想要在 H5 中做一个医生邀请提问的功能,可以将医生的二维码名片分享出去,支持移动、PC 和微信。之前的图片是由后端生成的,并且会缓存三天...

丁香园F2E
2017/11/25
0
0
图片处理工具

Android7.0 完美适配——FileProvider 拍照裁剪全解析 适配 android7.0 中的拍照相册裁剪功能 使用 photoView 实现可点击放大到全屏显示的控件,效果类似于微信朋友圈点开看大图 使用 photoV...

掘金官方
2017/12/11
0
0
安卓版类今日头条 App--TouTiao

Android 初学者做了一个头条 App,觉得好的可以看一下具体的内容! 技术栈 使用Joup和Okhttp进行网络数据的爬取 使用Recyclerview和PageFragment和自定义数据类型进行新闻数据的显示 基于Ret...

LaravelChe
2017/06/23
329
0
小程序 — 保存图片到手机相册

讲一下在微信小程序中,怎么把网络图片保存到本机相册中;这个功能其实在小程序开发中还是很常见的,比如保存海报之类的等等。 GitHub:https://github.com/Ewall1106/miniProgramDemo 1、保...

Ewall_
09/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

arcgis jsapi接口入门系列:总览

开发环境: arcgis jsapi版本4.9 由于我们这套代码是基于vue,webpack开发的,会有少数vue代码,但总体不影响 里面还有些我们公司的js库和html css,给出的代码不能百分百直接运行,主要还是...

canneljls
4分钟前
0
0
月薪80k阿里架构师漫谈他是如何从一名小码农走到架构师的

01 刚当程序员时,我是属于那种勤勤恳恳类型的员工,工作态度用认真来形容不为过,每天我几乎是团队里最早到公司,又最晚下班的一个。而组员张工一般情况下都是准时上下班的,即使项目进度比...

Java填坑之路
6分钟前
0
0
oracle的resetlogs机制浅析

oracle的resetlogs机制浅析 alter database open resetlogs 这个命令我想大家都很熟悉了,那有没有想过这个resetlogs选项为什么要用?什么时候用? 它的原理机制是什么?他都起哪些作用? 我...

突突突酱
7分钟前
0
0
JAVA 获取两个日期间的所有日期

public static List<String> getDates(String startDate, String endDate){    Date d1 = new SimpleDateFormat("yyyyMMdd").parse(startDate);//定义起始日期    Date d2 = new Simple......

尘叙缘
14分钟前
0
0
Innodb中的事务隔离级别和锁的关系

#一次封锁or两段锁? 因为有大量的并发访问,为了预防死锁,一般应用中推荐使用一次封锁法,就是在方法的开始阶段,已经预先知道会用到哪些数据,然后全部锁住,在方法运行之后,再全部解锁。...

Skqing
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部