Potete per favore guidarmi come posso convertire un'immagine da un URL alla codifica base64?
Potete per favore guidarmi come posso convertire un'immagine da un URL alla codifica base64?
Risposte:
Penso che dovrebbe essere:
$path = 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
Facile:
$imagedata = file_get_contents("/path/to/image.jpg");
// alternatively specify an URL, if PHP settings allow
$base64 = base64_encode($imagedata);
tieni presente che ciò aumenterà i dati del 33% e avrai problemi con file le cui dimensioni superano le tue memory_limit
.
Usa anche questo modo per rappresentare l'immagine nel formato di codifica base64 ... trova la funzione PHP file_get_content
e poi usa la funzionebase64_encode
e ottieni risultati per preparare str data:" . file_mime_type . " base64_encoded string
. Usalo nell'attributo img src. vedi il codice seguente posso aiutarti.
// 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")) ?>">
Stavo cercando di utilizzare questa risorsa ma continuavo a ricevere un errore, ho scoperto che il codice sopra funzionava perfettamente.
Ho appena sostituito QUI l'URL DELL'IMMAGINE con l'URL della tua immagine - http://www.website.com/image.jpg
Molto semplice e di uso comune:
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="">';
Nota: il tipo Mime del file verrà aggiunto automaticamente (prendendo aiuto da questa documentazione di PHP ).
Ecco il codice per il caricamento da codificare e salvarlo su 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 . "')");
}
}
Per mostrare l'immagine usa questo
echo "<img src='data:image/jpeg;base64, $image' width=300>";
Ecco un esempio usando una chiamata cURL. È meglio della funzione file_get_contents () . Naturalmente, usa 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
non è assolutamente "migliore" rispetto a file_get_contents
meno che non sia necessario aggiungere ulteriori dati alla chiamata es. autenticazione. Inoltre, file_get_contents
tornerà indietro per ottenere il contenuto di un file locale quando possibile, quindi non effettuare una chiamata di rete inutile.
Puoi anche farlo tramite arricciatura, basta un percorso per un file di immagine e passarlo alla funzione indicata di seguito.
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;
}