首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取图像并将其转换为data-uri格式

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

Stack Overflow用户
提问于 2017-01-29 13:35:00
回答 1查看 1K关注 0票数 2

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

例如:

代码语言:javascript
复制
$img = file_get_contents("http://something.com/something.png");

$datauri = magicalfunction($img);

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-29 13:57:55

数据URI由文字data:组成,然后是媒体类型(如果省略,则默认为text-plain ),如果您正在编码(如果您将二进制数据作为图像,则应该使用;base64 ),最后是数据本身。

某些文档的Linky

你可以这样做:

代码语言:javascript
复制
// 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一样提供服务之前下载图像,则必须在调用此函数之前进行下载,并将包含文件的缓冲区传递给此函数。

对于加分:“如何使用curl”可以总结如下:

代码语言:javascript
复制
$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()

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41917950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档