分享编程~
 
PHP根据图片路径转换成二进制和base64以及互相转换

PHP根据图片路径转换成二进制或者转换成base64方法,以及二进制和base64互转和输出图片。

根据图片路径转换成二进制

图片路径:

$image_file = 'http://pic308.nipic.com/file/20200712/29730056_103807407683_2.jpg'; // 远程图片
$image_file = '1.jpg'; // 本地图片

方法一(不支持远程图片):

$image_data = @fread(fopen($image_file, 'r'), filesize($image_file));

方法二(支持远程图片):

$image_data = file_get_contents($image_file);

如果想在浏览器上输出二进制图片:

$imageInfo = @getimagesize($image_file);  //图片格式
$imgType = isset($imageInfo['mime']) ? $imageInfo['mime'] : 'image/jpeg';
$imageData = file_get_contents($image_file);  //图片转为二进制
header("Content-type: ".$imgType);  //输出图片(image/jpeg,image/png等)
echo $imageData;
exit;

根据图片路径转换成base64的方法(先转换成二进制再进行base64encode

//方法一(不支持远程图片):
function base64Img1 ($image_file) {
    $base64_image = '';
    $image_info = getimagesize($image_file);
    $image_data = @fread(fopen($image_file, 'r'), filesize($image_file));
    $base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
    return $base64_image;
}  
//方法二(支持远程图片):
function base64Img2($image_file) {
    $base64_image = '';
    $image_info = getimagesize($image_file);
    $image_data = file_get_contents($image_file);
    $base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
    return $base64_image;
}

输出base64图片:

$imgBase64Str = base64Img2($image_file);
echo '<img src="'.$imgBase64Str.'">';

base64格式图片转化为二进制流

$imgArr = explode(',', $base64Str); 
//截取data:image/png;base64, 这个逗号后的字符
$imgStr = end($imgArr);
$imgData = base64_decode($imgStr);

如果要输出图片:

header("Content-type: image/jpeg");
echo $imgData;


上一篇:PHP中DES对称加密openssl特殊字符加密解密失败问题解决下一篇:Postman打开报错Could not open Postman…问题解决
赞(0) 踩(0)
您说多少就多少,您的支持是我最大的动力
赏金
微 信
赏金
支付宝
本文连接: https://www.yj521.com/article/155.html
版权声明: 本文为原创文章,版权归《越加网》所有,分享转载请注明出处!