可以使用 data-uri 作为参数调用 imagecreatefromjpeg() 吗?

Can call imagecreatefromjpeg() with data-uri as parameter?

我使用数据-uri data:image/jpeg;base64,BASE64_HERE 来传递图像。我可以通过这个值 imagecreatefromjpeg() 来保存为图像文件吗?

这个功能是如何工作的?

imagecreatefromjpeg() 函数从文件创建图像 variable,但不是反向创建。当您在 base64 中有图像源时,您可以使用简单的 file_put_contents() 函数来保存文件。例如:

$data = 'data:image/jpeg;base64,BASE64_HERE';

list($type, $data) = explode(';', $data);
list(, $data)      = explode(',', $data);
$data = base64_decode($data);

file_put_contents('/tmp/image.jpg', $data);

您也可以使用 imagecreatefromjpeg(),然后再使用 imagejpeg() 方法(如果您更喜欢这种方法)。但最好的方法是使用 imagecreatefromstring(),因为它会自动检测图像是否为 jpggifpng 等。例如:

$data = 'data:image/jpeg;base64,BASE64_HERE';
$image = imagecreatefromstring(base64_decode($data));
imagejpeg($image, 'image.jpg');