base64格式的图片字符串和图片文件相互转换的代码

 在移动端上传图片的时候通常会将图片转换成base64格式的字符串提交,所以此时需要使用服务器端的程序进行转换成二进制的数据。如下PHP代码实现了图片文件和base64格式的图片字符串相互转换的方法,同时保证了图片字符串转图片文件时数据类型的问题,进行了简单的封装,使用时可根据实际情况进行修改。具体查看如下代码:

class Img
{
	/**
		@param $base64Str  base64格式的图片字符串数据
		@param $path   保存的文件路径和文件名(不用带扩展名 自动匹配)
	*/
	function base64ToImg($base64Str,$path){
		$arr = explode(',',$base64Str);
		$bin = base64_decode($arr[1]);
		$ext = $this->getImgExt($bin);//获取真实扩展名
		if($ext !== false){
			file_put_contents($path . '.' . $ext,$bin);
		}else{
			exit('图片格式非法');
		}
	}

	/*
		图片文件转base64格式的图片字符串
		@param $img_file 图片路径和文件名
		return 图片字符串
	*/
	function imgToBase64($img_file){

		$img_info = getimagesize($img_file);
		$img_src = "data:{$img_info['mime']};base64," . base64_encode(file_get_contents($img_file));
		return $img_src;
	}
    /**
		获取图片文件的扩展名 如果不是图片数据则返回false
		@param $bin 二进制图片数据流
		return 图片扩展名
	*/
	public function getImgExt($bin){

		$bits = array(
			'jpg' => "\xFF\xD8\xFF",
			'gif' => "GIF",
			'png' => "\x89\x50\x4e\x47\x0d\x0a\x1a\x0a",
			'bmp' => 'BM',
		);

		foreach ($bits as $type => $bit) {
			if (substr($bin, 0, strlen($bit)) === $bit) {
				return $type;
			}
		}
		return false;

	}

}

$obj = new Img();

$str = '这里是base64格式的字符串';

$obj->base64ToImg($str,'路径/文件名');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值