php 生成图片流,PHP中把图片转换成Base64编码的数据流的方法

在项目开发中,比如一个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 '


';

echo ''.%24img_base64.';//图片形式展示

温馨提示:关于图片的位置请使用图片的绝对位置,这样是OK滴。使用带http的相对位置会报错 php filesize(): stat failed for ..... 出错是因为相对路径只是文件名,但并不包含文件的绝对路径,所以在调用filesize()等函数时,无法得到文件的绝对路径,就无法读取,从而导致出错。既然这样,那改的时候就指定文件的绝对路径。

我们不木讷,我们期待爱情。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值