получить изображение и преобразовать его в формат 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.

2

Решение

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Вы должны сделать это перед вызовом этой функции и передать функцию в буфер, содержащий файл.

Для бонусных баллов: «как использовать завиток» можно суммировать следующим образом:

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

2

Другие решения

Других решений пока нет …