PHP: Как преобразовать изображение из URL в Base64?

Я хочу преобразовать изображение из его url в base64.

Ответ 1

Вы хотите создать URL-адрес данных? Затем вам нужен MIME-тип и другая дополнительная информация (см. Wikipedia). Если это не так, это будет простое представление base64 изображения:

$b64image = base64_encode(file_get_contents('path/to/image.png'));

Соответствующие документы: base64_encode() -функция, file_get_contents() - функция.

Ответ 2

Попробуйте следующее: -

Пример 1: -

<?php 
function base64_encode_image ($filename=string,$filetype=string) {
    if ($filename) {
        $imgbinary = fread(fopen($filename, "r"), filesize($filename));
        return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);
    }
}
?>

used as so

<style type="text/css">
.logo {
    background: url("<?php echo base64_encode_image ('img/logo.png','png'); ?>") no-repeat right 5px;
}
</style>

or

<img src="<?php echo base64_encode_image ('img/logo.png','png'); ?>"/>

Пример два: -

$path= 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);

Ответ 3

Я дошел до этого вопроса, ища аналогичное решение, на самом деле, я понял, что это был оригинальный вопрос.

Я хотел сделать то же самое, но файл был на удаленном сервере, так что это то, что я сделал:

$url = 'http://yoursite.com/image.jpg';
$image = file_get_contents($url);
if ($image !== false){
    return 'data:image/jpg;base64,'.base64_encode($image);

}

Итак, этот код является функцией, возвращающей строку, и вы можете вывести возвращаемое значение внутри параметра src тега img в html. Я использую smarty как мою библиотеку шаблонов. Это может выглядеть так:

<img src="<string_returned_by_function>">

Обратите внимание на явный вызов:

if ($image !== false)

Это необходимо, потому что file_get_contents может возвращать 0 и в некоторых случаях забрасываться в false, даже если выборка файла прошла успешно. На самом деле в этом случае это не должно происходить, но это хорошая практика при извлечении содержимого файла.