PHP中把图片转换成Base64编码的数据流的方法
- 12469
- PHP
- 6
- super_dodo
- 2015/09/28
在项目开发中,比如一个APP的开机启动图片,因为定期要更换广告信息图。所以这个图片是在后台编辑和修改的。但是对于活跃的用户,每次开启APP的时候都去后台加载或者请求图片,这样网络传输的因素,就会显得很慢,影响体验效果。
比较适中的解决方案是后台返回图片信息以及图片的base64,这样base64就可以存储在app端的本地了。比对一下,取本地base64展示出来即可,不需要再加载服务器端的图片。也就是相当于图片做了本地缓存。
下面直接上代码,建议写一个公共的方法。
//传入图片地址,得到图片的Base64编码 public function img2Base64($img_file){ $img_base64 = ''; $app_dir = dirname(dirname(dirname(__FILE__))); //根据你的需要得到绝对路径 $app_img_file = $app_dir.$img_file; //组合出真实的绝对路径 $img_info = getimagesize($app_img_file); //取得图片的大小,类型等 $fp = fopen($app_img_file,"r"); //图片是否可读权限 if($fp){ $file_content = chunk_split(base64_encode(fread($fp,filesize($app_img_file))));//base64编码 switch($img_info[2]){ //判读图片类型 case 1:$img_type="gif";break; case 2:$img_type="jpg";break; case 3:$img_type="png";break; } $img_base64 = 'data:image/'.$img_type.';base64,'.$file_content;//合成图片的base64编码 fclose($fp); } return $img_base64; //返回图片的base64 } //调用使用的方法--得到开机界面图片 $img_dir = '/upload/img/201509/11213223.jpg'; $img_base64 = $this->img2Base64($img_dir); echo $img_base64; //输出Base64编码 echo '<hr>'; echo '<img src="'.$img_base64.'"'>; //图片形式展示
温馨提示:关于图片的位置请使用图片的绝对位置,这样是OK滴。使用带http的相对位置会报错 php filesize(): stat failed for ..... 出错是因为相对路径只是文件名,但并不包含文件的绝对路径,所以在调用filesize()等函数时,无法得到文件的绝对路径,就无法读取,从而导致出错。既然这样,那改的时候就指定文件的绝对路径。
我们不木讷,我们期待爱情。
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例