Чи можете ви, будь ласка, вказувати мені, як я можу перетворити зображення з URL у кодування base64?
Чи можете ви, будь ласка, вказувати мені, як я можу перетворити зображення з URL у кодування base64?
Відповіді:
Я думаю, що це повинно бути:
$path = 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
Легко:
$imagedata = file_get_contents("/path/to/image.jpg");
// alternatively specify an URL, if PHP settings allow
$base64 = base64_encode($imagedata);
майте на увазі, що це збільшить дані на 33%, і у вас виникнуть проблеми з файлами, розмір яких перевищує ваш memory_limit
.
Скористайтеся також цим способом для подання зображення у форматі кодування base64 ... знайдіть функцію PHP file_get_content
та поруч із функцієюbase64_encode
і отримайте результат, щоб підготувати str як data:" . file_mime_type . " base64_encoded string
. Використовуйте його в атрибуті img src. див. наступний код, чи можу я допомогти вам?
// A few settings
$img_file = 'raju.jpg';
// Read image path, convert to base64 encoding
$imgData = base64_encode(file_get_contents($img_file));
// Format the image SRC: data:{mime};base64,{data};
$src = 'data: '.mime_content_type($img_file).';base64,'.$imgData;
// Echo out a sample image
echo '<img src="'.$src.'">';
<img src="data:image/png;base64,<?php echo base64_encode(file_get_contents("IMAGE URL HERE")) ?>">
Я намагався використовувати цей ресурс, але постійно отримував помилку, я виявив, що код вище працював ідеально.
Щойно замінили IMAGE URL-адресу ТУТ на URL-адресу вашого зображення - http://www.website.com/image.jpg
Дуже простий і звичайний:
function getDataURI($imagePath) {
$finfo = new finfo(FILEINFO_MIME_TYPE);
$type = $finfo->file($imagePath);
return 'data:'.$type.';base64,'.base64_encode(file_get_contents($imagePath));
}
//Use the above function like below:
echo '<img src="'.getDataURI('./images/my-file.svg').'" alt="">';
echo '<img src="'.getDataURI('./images/my-file.png').'" alt="">';
Примітка: Тип файлу Mime-тип буде доданий автоматично (беручи довідку з цієї документації на PHP ).
Ось код для завантаження для кодування та збереження його в MySQL
if (!isset($_GET["getfile"])) {
if ($_FILES["file"]["error"] > 0) {
echo "Error: " . $_FILES["file"]["error"] . "<br>";
} else {
move_uploaded_file($_FILES["file"]["tmp_name"], $_FILES["file"]["name"]);
$bin_string = file_get_contents($_FILES["file"]["name"]);
$hex_string = base64_encode($bin_string);
$mysqli = mysqli_init();
if (!$mysqli->real_connect('localhost', 'root', '', 'arihant')) {
die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
}
$mysqli->query("INSERT INTO upload(image) VALUES ('" . $hex_string . "')");
}
}
Для показу зображення використовуйте це
echo "<img src='data:image/jpeg;base64, $image' width=300>";
Ось приклад використання виклику cURL. Це краще, ніж функція file_get_contents () . Звичайно, використовуйте base64_encode ()
$url = "http://example.com";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
?>
<img src="data:image/png;base64,<?php echo base64_encode($output);?>">
curl
абсолютно не "кращий", ніж file_get_contents
якщо вам не потрібно буде додавати додаткові дані у колишній виклик аутентифікація. Крім того, file_get_contents
збирається відмовитися від отримання вмісту локального файлу, коли це можливо, таким чином не роблячи марного мережевого дзвінка.
Ви також можете це зробити за допомогою curl, просто вам потрібен шлях до файлу зображення та передати його до функції, наведеної нижче ..
public static function getImageDataFromUrl($url)
{
$urlParts = pathinfo($url);
$extension = $urlParts['extension'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, 0);
$response = curl_exec($ch);
curl_close($ch);
$base64 = 'data:image/' . $extension . ';base64,' . base64_encode($response);
return $base64;
}