在移动端上传图片的时候通常会将图片转换成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,'路径/文件名');
-
汤汁浓分析好号100%中奖极速飞艇、味道重、油水足”的菜,就是好菜,用“浓而不腻”、“味浓香醇”、“盐足油重分析好号100%中奖开奖网”等词语,来形容美味佳肴。厨师调味,也离不了“浓、重、大”的三字原则。灌汤小笼包的分析好号100%中奖澳洲幸运10皮是薄薄的,甚至都透亮了,张嘴咬一口,里面鲜美的高兴就去旅游啊,来这里有很多旅游体验给大家汁水流入口中,咬那浸了汁水的肉团,不肥不腻,入口爽滑……那真叫美!(0) 回复 (0)
-
目前大家熟知的百家樂預測公式,主要分別是算牌、預測及投注三種預測方法(0) 回复 (0)
-
讨债公司/蓝月传奇辅助/蓝月辅助(0) 回复 (0)
-
讨债公司 搬家公司 蓝月传奇辅助(0) 回复 (0)