[英]How to convert data URI to buffer (string with binary)?
我正在使用react编辑图像并使用mycanvas.toDataURL()
将其最终数据发送到php。
[...]从缓冲区上传图像(带二进制的字符串)
他们的示例如下所示:
$sourceData = file_get_contents("example.jpg");
$resultData = \Tinify\fromBuffer($sourceData)->toBuffer();
就像我说的,我没有一个上传的图片,而是一个看起来像这样的数据URI:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDgAAAQ4C2dj892d2dh98a2d...
如何将该数据URI转换为有效的缓冲区以用作$sourceData
?
您可以尝试将字符串转换为图像文件,然后发送该文件,可以使用如下代码执行此操作:
function base64_to_image($base64_string, $output_file) {
$ifp = fopen( $output_file, 'wb' );
$data = explode( ',', $base64_string );
fwrite( $ifp, base64_decode( $data[ 1 ] ) );
fclose( $ifp );
return $output_file;
}
所以,就这样称呼它:
$file = base64_to_image('data:image/png;base64,iVBORw0...', 'myImage.png');
$sourceData = file_get_contents($file);
$resultData = \Tinify\fromBuffer($sourceData)->toBuffer();
编辑:另外(首选)您可以按原样使用解码后的字符串,而不用写入文件并读取它。 像这样:
function base64_to_image($base64_string) {
$data = explode( ',', $base64_string );
return base64_decode($data[ 1 ]);
}
您可以这样称呼它:
$sourceData = base64_to_image('data:image/png;base64,iVBORw0...');
$resultData = \Tinify\fromBuffer($sourceData)->toBuffer();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.