微信头像链接转 base64
由于自己脑子比较笨 记录一下微信头像链接转 base64 的方法 #
如有侵权请联系 18210686506 郝#
使用到的工具#
composer require ixudra/curl
在 App\Http\Responses 创建一个新的文件 AjaxResp.php
AjaxResp.php #
<?php
namespace App\Http\Responses;
class AjaxResp {
public function __construct() {
$params = func_get_args();
foreach( $params as $param )
{
$this->{$param} = null;
}
}
// 将对象转为 JSON 对象
public function toJson()
{
$json = json_encode($this, JSON_UNESCAPED_UNICODE);
return response()->make($json)->header('Content-Type', 'application/json; charset=UTF-8');
}
public $ret;
public $msg;
}
创建一个的控制器 然后写入话不多说直接上码#
<?php
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;
use App\Http\Responses\AjaxResp;
use App\Models\WxUser;
use Curl;
use Image;
class WeChatController extends BaseController
{
public function avatarBridge() {
set_time_limit(60);
$resp = new AjaxResp();
$headimgurl = request('headimgurl');
if( !$headimgurl ) {
$resp->ret = 1;
$resp->msg = 'invalid headimgurl url';
return $resp->toJson();
}
// 获取大图
$headimgurl = substr($headimgurl, 0, strripos($headimgurl, '/')) . '/0';
$filename = sha1($headimgurl);
$ymd = date('Ymd');
$uploadDir = public_path("/upload/avatar/$ymd");
if( !is_dir($uploadDir) ) {
@mkdir($uploadDir, 0777, true);
}
$fileuri = "/upload/avatar/$ymd/$filename.png";
$filepath = public_path($fileuri);
if( !file_exists($filepath) || filesize($filepath) < 8 ) {
$response = Curl::to($headimgurl)
->withContentType('image/png')
->withHeader('Connection: close')
->download($filepath);
}
if( !file_exists($filepath) ) {
$resp->ret = 3;
$resp->msg = 'headimgurl download error';
return $resp->toJson();
}
// 头像 base64
$type = pathinfo($filepath, PATHINFO_EXTENSION);
$avatarData = file_get_contents($filepath);
$resp->ret = 0;
$resp->msg = 'success';
$resp->base64 = 'data:image/' . $type . ';base64,' . base64_encode($avatarData);
return $resp->toJson();
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: