Я заинтересован в запросе изображения через HTTP с PHP, а затем преобразовать изображение в 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
Вы должны сделать это перед вызовом этой функции и передать функцию в буфер, содержащий файл.
Для бонусных баллов: «как использовать завиток» можно суммировать следующим образом:
$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()
,
Других решений пока нет …