Bisakah Anda memandu saya bagaimana saya bisa mengkonversi gambar dari URL ke pengkodean base64?
Bisakah Anda memandu saya bagaimana saya bisa mengkonversi gambar dari URL ke pengkodean base64?
Jawaban:
Saya pikir seharusnya:
$path = 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
Mudah:
$imagedata = file_get_contents("/path/to/image.jpg");
// alternatively specify an URL, if PHP settings allow
$base64 = base64_encode($imagedata);
ingatlah bahwa ini akan memperbesar data sebesar 33%, dan Anda akan memiliki masalah dengan file yang ukurannya melebihi Anda memory_limit
.
Gunakan juga cara ini untuk mewakili gambar dalam format encode base64 ... cari fungsi PHP file_get_content
dan selanjutnya gunakan fungsibase64_encode
dan dapatkan hasil untuk mempersiapkan str as data:" . file_mime_type . " base64_encoded string
. Gunakan dalam atribut img src. lihat kode berikut ini bisa saya bantu.
// 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")) ?>">
Saya mencoba menggunakan sumber ini tetapi terus mendapatkan kesalahan, saya menemukan kode di atas bekerja dengan sempurna.
Baru saja mengganti URL IMAGE DI SINI dengan URL gambar Anda - http://www.website.com/image.jpg
Sangat sederhana dan umum digunakan:
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="">';
Catatan: Mime-Type file akan ditambahkan secara otomatis (mengambil bantuan dari dokumentasi PHP ini ).
Berikut adalah kode untuk mengunggah untuk menyandikan dan menyimpannya ke 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 . "')");
}
}
Untuk menunjukkan gambar gunakan ini
echo "<img src='data:image/jpeg;base64, $image' width=300>";
Berikut adalah contoh menggunakan panggilan CURL .. Ini lebih baik daripada fungsi file_get_contents () . Tentu saja, gunakan 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
sama sekali tidak "lebih baik" daripada file_get_contents
kecuali Anda perlu menambahkan data tambahan ke panggilan ex. autentikasi. Selain itu, file_get_contents
akan mundur untuk mendapatkan konten file lokal bila memungkinkan, sehingga tidak membuat panggilan jaringan yang tidak berguna.
Anda juga dapat melakukan ini melalui curl, Anda hanya perlu path ke file gambar dan meneruskannya ke fungsi yang diberikan di bawah ini ..
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;
}