php curl输出图片base64,PHP获取远程图片返回base64编码

$url="远程图片链接";

function curl_url($url,$type=0,$timeout=30){

$msg = ['code'=>2100,'status'=>'error','msg'=>'未知错误!'];

$imgs= ['image/jpeg'=>'jpeg',

'image/jpg'=>'jpg',

'image/gif'=>'gif',

'image/png'=>'png',

'text/html'=>'html',

'text/plain'=>'txt',

'image/pjpeg'=>'jpg',

'image/x-png'=>'png',

'image/x-icon'=>'ico'

];

if(!stristr($url,'http')){

$msg['code']= 2101;

return $msg;

}

$dir= pathinfo($url);

//var_dump($dir);

$host = $dir['dirname'];

$refer= $host.'/';

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回变量内容还是直接输出字符串,0输出,1返回内容

curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);//在启用CURLOPT_RETURNTRANSFER的时候,返回原生的(Raw)输出

curl_setopt($ch, CURLOPT_HEADER, 0); //是否输出HEADER头信息 0否1是

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); //超时时间

$data = curl_exec($ch);

//$httpCode = curl_getinfo($ch,CURLINFO_HTTP_CODE);

//$httpContentType = curl_getinfo($ch,CURLINFO_CONTENT_TYPE);

$info = curl_getinfo($ch);

curl_close($ch);

$httpCode = intval($info['http_code']);

$httpContentType = $info['content_type'];

$httpSizeDownload= intval($info['size_download']);

if($httpCode!='200'){

$msg['code']= 2102;

$msg['msg'] = 'url返回内容不正确!';

return $msg;

}

if($type>0 && !isset($imgs[$httpContentType])){

$msg['code']= 2103;

$msg['msg'] = 'url资源类型未知!';

return $msg;

}

if($httpSizeDownload<1){

$msg['code']= 2104;

$msg['msg'] = '内容大小不正确!';

return $msg;

}

$msg['code']  = 200;

$msg['status']='success';

$msg['msg']   = '资源获取成功';

if($type==0 or $httpContentType=='text/html') $msg['data'] = $data;

$base_64 = base64_encode($data);

if($type==1) $msg['data'] = $base_64;

elseif($type==2) $msg['data'] = "data:{$httpContentType};base64,{$base_64}";

elseif($type==3) $msg['data'] = "";

else $msg['msg'] = '未知返回需求!';

unset($info,$data,$base_64);

return $msg;

}

$msg = curl_url($url,3);

if($msg['status']=='success') echo $msg['data'];

die;

?>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值