将图像数据URI转换为图像PHP

wj8zmpe1  于 2023-04-28  发布在  PHP
关注(0)|答案(2)|浏览(160)

我在PHP中有一个数据URI变量

$imageURL  = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAYAAACadoJwAAAgAElEQ…ACIiACIiAC5U1AAqS891erEwEREAEREAEREAEREIFAEfj/bfXX..."

我正试图插入到一个PDF使用FPDF格式,我需要转换成一个图像,我猜这。我试着做一些

base64_decode($imageURL);

但这行不通。如何成功地将此数据uri插入pdf。

mbzjlibv

mbzjlibv1#

$image_content = base64_decode(str_replace("data:image/png;base64,","",$imageURL)); // remove "data:image/png;base64,"
$tempfile = tmpfile(); // create temporary file
fwrite($tempfile, $image_content); // fill data to temporary file
$metaDatas = stream_get_meta_data($tempfile);
$tmpFilename = $metaDatas['uri'];

现在你可以像这样将该图像用于fpdf:

$pdf->Image($tmpFilename,null,null,0,0);

或者您可以通过添加图像类型参数来指定图像类型,如下所示:

$pdf->Image($tmpFilename,null,null,0,0,'PNG');

请查看http://www.fpdf.org/en/doc/image.htm

gcmastyq

gcmastyq2#

通常我们会有类似

data:text/plain;base64,SGVsbG8sIFdvcmxkIQ==

因此,在第一个逗号之后,所有数据都将是纯文件源。下面我们删除了第一部分“data:text/plain;base64”,然后再次制作胶水串,例如逗号可以在字符串的中间。因此,提供代码:

$file = explode(',', $file);
unset($file[0]);
$file = implode(',', $file);

另一种变体是通过substr或类似的方法找到第一个逗号,然后删除这部分文本,也许它比implode/explode更快。
因此,您可以存储文件:

file_put_contents('filename.ext', base64_decode(result));

相关问题