jiuhecai今日在雨后的天气里,谈谈php中,图片数据和字符串的相互转化。
图片转字符串
把图片读入内存,然后用base64函数转化,加上头部特征串,就完成了图片的字符串化。代码如下:
<?php $img = ECMS_PATH.'/bg/biglogo.gif'; $base64_img = base64EncodeImage($img); echo '<img src="' . $base64_img . '" />'; function base64EncodeImage ($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; }
运行后的结果为:
<img src="data:image/gif;base64,R0lGODlh+AI8APcAAP//////zP//mf//Zv//M///AP/M///MzP/Mmf/MZv/MM//MAP+Z//+ZzP+Z mf+ZZv+ZM/+ZAP9m//9mzP9mmf9mZv9mM/9mAP8z//8zzP8zmf8zZv8zM/8zAP8A//8AzP8Amf8A Zv8AM/8AAMz//8z/zMz/mcz/Zsz/M8z/AMzM/8zMzMzMmczMZszMM8zMAMyZ/8yZzMyZmcyZZsyZ M8yZAMxm/8xmzMxmmcxmZsxmM8xmAMwz/8wzzMwzmcwzZswzM8wzAMwA/8wAzMwAmcwAZswAM8wA AJn//5n/zJn/mZn/Zpn/M5n/AJnM/5nMzJnMmZnMZpnMM5nMAJmZ/5mZzJmZmZmZZpmZM5mZAJlm /5lmzJlmmZlmZplmM5lmAJkz/5kzzJkzmZkzZpkzM5kzAJkA/5kAzJkAmZkAZpkAM5kAAGb//2b/ zGb/mWb/Zmb/M2b/AGbM/2bMzGbMmWbMZmbMM2bMAGaZ/2aZzGaZmWaZZmaZM2aZAGZm/2ZmzGZm mWZmZmZmM2ZmAGYz/2YzzGYzmWYzZmYzM2YzAGYA/2YAzGYAmWYAZmYAM2YAADP//zP/zDP/mTP/ ZjP/MzP/ADPM/zPMzDPMmTPMZjPMMzPMADOZ/zOZzDOZmTOZZjOZMzOZADNm/zNmzDNmmTNmZjNm MzNmADMz/zMzzDMzmTMzZjMzMzMzADMA/zMAzDMAmTMAZjMAMzMAAAD//wD/zAD/mQD/ZgD/MwD/ AADM/wDMzADMmQDMZgDMMwDMAACZ/wCZzACZmQCZZgCZMwCZAABm/wBmzABmmQBmZgBmMwBmAAAz /wAzzAAzmQAzZgAzMwAzAAAA/wAAzAAAmQAAZgAAMwAAAJ0BAFUICH55Vrewf+/kqGFaP+fLleO5 e82pc8WcZ9asccykbdyyd7uWZcuaX9KgY76SW8OVXriNWtWmapt0SqiAUrKIV4tlQXpVOPLp4k0y IGZELOeZaS0bEfSIV9WEXd5yS9dHKbovHssUA7ORjq0LBaV8e////yH5BAEAAP8ALAAAAAD4AjwA AAj/AN/Bg9euoMGD7BKye8dwIDyGECEqTPhOYTt36dKFC5cR3Thw4MalQ7cxI8eR41KqXMmy5biN MGPKlOmypcZwJE+qg5nO3c6T7moKPRlTnTp06cCNRIc03DimIpGiw/gR5FOV6I4yzXjUnTumWbP6 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 E+ENsydegKWPAgIAOw== " />
图片的字符串数据转化为图片输出
反过来,如果已知图片的base64字符串,如何生成图片呢?看如下的代码:
<?php header('Content-type:text/html;charset=utf-8'); $base64_image_content = $_POST['imgBase64']; //匹配出图片的格式 if (preg_match('/^(data:s*image/(w+);base64,)/', $base64_image_content, $result)){ $type = $result[2]; $new_file = "upload/active/img/".date('Ymd',time())."/"; if(!file_exists($new_file)) { //检查是否有该文件夹,如果没有就创建,并给予最高权限 mkdir($new_file, 0700); } $new_file = $new_file.time().".{$type}"; if (file_put_contents($new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))){ echo '新文件保存成功:', $new_file; }else{ echo '新文件保存失败'; } } ?>
以上代码可以把base64的图片数据,保存为指定的文件。如果要直接输出到客户端,那更加简单了:
<?php $data = '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'; $data = base64_decode($data); $im = imagecreatefromstring($data); if ($im !== false) { header('Content-Type: image/png'); imagepng($im); imagedestroy($im); } else { echo 'An error occurred.'; } ?>