获取图像并将其转换为data-uri格式

时间:2017-01-29 05:35:00

标签: php curl data-uri

我有兴趣通过HTTP使用PHP请求图像,然后将图像转换为数据URI。我该怎么做呢?

例如:

$img = file_get_contents("http://something.com/something.png");

$datauri = magicalfunction($img);

echo("<img src=\"$datauri\" />");

我知道我在那里使用了file_get_contents(),但我更喜欢不使用文件功能的解决方案。如果可能,我想使用cURL。

1 个答案:

答案 0 :(得分:3)

数据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) . "'/>";

Ta da!

如果您在提供图片之前下载图像data,则必须在调用此函数之前执行此操作,并将函数传递给包含该文件的缓冲区。

奖励积分:“如何使用卷曲”可归纳为:

$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()