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;