获取图像并将其转换为 data-uri 格式
fetch image and convert it to data-uri format
我有兴趣使用 PHP 通过 HTTP 请求图像,然后将图像转换为数据 URI。我该怎么做?
例如:
$img = file_get_contents("http://something.com/something.png");
$datauri = magicalfunction($img);
echo("<img src=\"$datauri\" />");
我知道我在那里使用了 file_get_contents()
,但我更喜欢不使用文件功能的解决方案。如果可能,我想使用 cURL。
数据URI由文字data:
组成,然后是媒体类型(如果省略则默认为text-plain),;base64
如果你正在编码(你应该,如果你有二进制数据作为图像),然后是数据本身。
Linky 一些文档。
你可以这样做:
// Your image
$image = 'crazy_cat.jpg';
$myvar = file_get_contents($image);
function srcData($image)
{
$finfo = finfo_open(FILEINFO_MIME_TYPE);
// reads your image's data and convert it to base64
$data = base64_encode($image);
// Create the image's SRC: "data:{mime};base64,{data};"
return 'data: ' . finfo_buffer($finfo, $image) . ';base64,' . $data;
}
echo "<img src='" . srcData($myvar) . "'/>";
哒哒!
如果您像 data
一样在提供图像之前下载图像,则必须在调用此函数之前执行此操作,并将包含文件的缓冲区传递给函数。
加分:"how to use curl"可以总结为:
$ch = curl_init('http://placekitten.com.s3.amazonaws.com/homepage-samples/408/287.jpg');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$myvar = curl_exec($ch);
curl_close($ch);
您的图像将在 $myvar
中,准备传递给 srcData()
。
我有兴趣使用 PHP 通过 HTTP 请求图像,然后将图像转换为数据 URI。我该怎么做?
例如:
$img = file_get_contents("http://something.com/something.png");
$datauri = magicalfunction($img);
echo("<img src=\"$datauri\" />");
我知道我在那里使用了 file_get_contents()
,但我更喜欢不使用文件功能的解决方案。如果可能,我想使用 cURL。
数据URI由文字data:
组成,然后是媒体类型(如果省略则默认为text-plain),;base64
如果你正在编码(你应该,如果你有二进制数据作为图像),然后是数据本身。
Linky 一些文档。
你可以这样做:
// Your image
$image = 'crazy_cat.jpg';
$myvar = file_get_contents($image);
function srcData($image)
{
$finfo = finfo_open(FILEINFO_MIME_TYPE);
// reads your image's data and convert it to base64
$data = base64_encode($image);
// Create the image's SRC: "data:{mime};base64,{data};"
return 'data: ' . finfo_buffer($finfo, $image) . ';base64,' . $data;
}
echo "<img src='" . srcData($myvar) . "'/>";
哒哒!
如果您像 data
一样在提供图像之前下载图像,则必须在调用此函数之前执行此操作,并将包含文件的缓冲区传递给函数。
加分:"how to use curl"可以总结为:
$ch = curl_init('http://placekitten.com.s3.amazonaws.com/homepage-samples/408/287.jpg');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$myvar = curl_exec($ch);
curl_close($ch);
您的图像将在 $myvar
中,准备传递给 srcData()
。