欢迎光临
我们一直在努力

php编程-将图片转成二进制并生成Base64编码

接口开发中,好多时候图片的上传是通过先将图片转成二进制并生成Base64编码然后POST给API接口的,最近在帮客户开发阿里云的域名认证模板的接口,认证过程中需要上传证件,原本上传图片的这种API开发过好多,但今天怎么传,阿里云接口返回信息:“图片被损坏,请更新图片重新上传” ,研究来研究去,自己编码的base64没有错误,转成图片一切正常,没有办法吃饭,出去转了一圈,回家后细细研究下自己的这个函数,后来想会不会阿里要求的字符串不能分割呀,平时分割成一段段的,再转换成图片时是没有什么影响的,后来把分割的这个函数删除掉,重新提交了一个认证,几分钟后收到阿里云邮件,认证成功,到此可以确定就是分割造成的问题了,前面说这种分割对于再次转换成图片没啥影响,对于新网域名认证模板的证件提交这样分割也是没啥影响的,因为我一直用着的,话不多说,把函数分享给大家!

$img = '../../UserFiles/domainname/ali_20181127211537.jpg';
$base64_img = base64EncodeImage($img);
echo  $base64_img;
function base64EncodeImage ($image_file) {
	$base64_image = '';
	$image_info = getimagesize($image_file);
	$image_data = fread(fopen($image_file, 'rb'), filesize($image_file));
	//chunk_split把字符串分割成一段段的了。不影响正常转换成图片,
	//$base64_image = 'data:' . $image_info['mime'] . ';base64,' . chunk_split(base64_encode($image_data));
	//新网可以直接用下面的这种chunk_split把字符串分割成一段段的了。
	//$base64_image = chunk_split(base64_encode($image_data));
	//阿里云只能用下面这种不能有任何分割的字符串POST数据给接口
	$base64_image = base64_encode($image_data);
	return $base64_image;
}
赞(1) 打赏
原创文章转载请注明出处:爱编程 » php编程-将图片转成二进制并生成Base64编码
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

爱编程、一个运维兼程序员的博客!

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏