Bạn có thể vui lòng hướng dẫn cho tôi cách tôi có thể chuyển đổi hình ảnh từ URL sang mã hóa base64 không?
Bạn có thể vui lòng hướng dẫn cho tôi cách tôi có thể chuyển đổi hình ảnh từ URL sang mã hóa base64 không?
Câu trả lời:
Tôi nghĩ rằng nó nên được:
$path = 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
Dễ dàng:
$imagedata = file_get_contents("/path/to/image.jpg");
// alternatively specify an URL, if PHP settings allow
$base64 = base64_encode($imagedata);
lưu ý rằng điều này sẽ phóng to dữ liệu lên 33% và bạn sẽ gặp vấn đề với các tệp có kích thước vượt quá của bạn memory_limit
.
Cũng sử dụng cách này để biểu diễn hình ảnh ở định dạng mã hóa base64 ... tìm hàm PHP file_get_content
và bên cạnh sử dụng hàmbase64_encode
và nhận kết quả để chuẩn bị str như data:" . file_mime_type . " base64_encoded string
. Sử dụng nó trong thuộc tính img src. xem mã sau đây tôi có thể giúp gì cho bạn
// 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")) ?>">
Tôi đã cố gắng sử dụng tài nguyên này nhưng liên tục gặp lỗi, tôi thấy đoạn mã trên hoạt động hoàn hảo.
Chỉ cần thay thế URL IMAGE TẠI ĐÂY bằng URL hình ảnh của bạn - http://www.website.com/image.jpg
Rất đơn giản và được sử dụng phổ biến:
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="">';
Lưu ý: Loại Mime của tệp sẽ được thêm tự động (nhận trợ giúp từ tài liệu PHP này ).
Đây là mã để tải lên để mã hóa và lưu nó vào 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 . "')");
}
}
Để hiển thị hình ảnh sử dụng này
echo "<img src='data:image/jpeg;base64, $image' width=300>";
Dưới đây là một ví dụ sử dụng lệnh gọi cURL .. Điều này tốt hơn hàm file_get_contents () . Tất nhiên, sử dụng 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
hoàn toàn không "tốt hơn" file_get_contents
trừ khi bạn cần thêm dữ liệu bổ sung vào cuộc gọi cũ. xác thực. Hơn nữa, file_get_contents
sẽ dự phòng khi nhận được nội dung của tệp cục bộ khi có thể, do đó không thực hiện cuộc gọi mạng vô dụng.
Bạn cũng có thể thực hiện việc này thông qua curl, chỉ cần bạn cần một đường dẫn đến tệp hình ảnh và chuyển nó đến chức năng được cung cấp bên dưới ..
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;
}