PHP实现阿里OSS文字水印URL安全的Base64编码,解码函数

a32843129 后端 2019-07-03

PHP实现阿里OSS文字水印URL安全的Base64编码,解码函数

阿里云文字水印参数必须是URL安全的Base64编码(详见:https://help.aliyun.com/document_detail/32211.html?spm=a2c4g.11186623.2.10.275930d38ylgjx#concept-tb5-shx-wdb

URL安全的Base64位编码

在图片处理服务里会有很多参数需要变成Base64位编码。注意这里的URL 安全Base64位编码只是用在水印操作某些特定参数(文字水印的文字内容、文字颜色、文字字体及图片水印的水印object)里,不要将其用在签名字符串(Signature)的内容里。编码的格式是:

  • 先将内容编码成Base64结果;
  • 将结果中的加号”+”替换成中划线“-“;
  • 将结果中的斜杠”/”替换成下划线”_”;
  • 将结果中尾部的“=”号全部保留。

PHP实现URL安全的Base64位编码、解码函数

编码函数:

function urlsafe_b64encode($string) {
	$data = base64_encode($string);
	$data = str_replace(array('+','/','='),array('-','_',''),$data);

	return $data;
}

解码函数:

function urlsafe_b64decode($string) {
	$data = str_replace(array('-','_'),array('+','/'),$string);
	$mod4 = strlen($data) % 4;

    if ($mod4) {
    	$data .= substr('====', $mod4);
    }

    return base64_decode($data);
}

评论