Wie kann ich ein Bild von einer URL in die Base64-Codierung konvertieren?
So konvertieren Sie ein Bild in die Base64-Codierung
Flüchtig3
Ronny Scherer
Ich denke, dass es sein sollte:
$path="myfolder/myimage.png";
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
-
Es hängt davon ab, wofür Sie das Bild benötigen. Wenn es sich um eine Inline-URL handelt, ist dies der richtige Weg. Es ist jedoch nicht identisch mit der reinen base64-Codierung.
– Pekka
31. Juli 2013 um 13:21 Uhr
-
Ausgezeichneter Tipp, jetzt werde ich eine Funktion zum Bearbeiten des Datei-Uploads erstellen oder move_uploaded_file() wiederherstellen, danke
– Vinicius de Jesus
28. März 2020 um 13:54 Uhr
-
Das funktionierte wie ein Zauber! Ich bin jetzt schon eine Weile beim DomPDF-Bild hängengeblieben, vielen Dank dafür!
– Suomynona
2. Mai 2021 um 23:21 Uhr
-
Die
pathinfo($path, PATHINFO_EXTENSION)
Teil funktioniert möglicherweise nicht mit SVG Bilder. Ändern Sie einfach die letzte Zeile inphp $base64 = 'data:image/svg+xml;base64,' . base64_encode($data);
– Eddie C.
26. Januar um 17:01 Uhr
Pekka
Leicht:
$imagedata = file_get_contents("/path/to/image.jpg");
// alternatively specify an URL, if PHP settings allow
$base64 = base64_encode($imagedata);
Denken Sie daran, dass dadurch die Daten um 33 % vergrößert werden und Sie Probleme mit Dateien haben, deren Größe Ihre Größe überschreitet memory_limit
.
-
@anna tut es! Base64-Codierung wird dies im Allgemeinen tun.
– Pekka
5. Februar 2019 um 8:34 Uhr
Raju Ram
Verwenden Sie diese Methode auch, um ein Bild im Base64-codierten Format darzustellen …
Suchen Sie die PHP-Funktion file_get_content
und verwenden Sie als nächstes die Funktion base64_encode
.
Und erhalten Sie das Ergebnis, um str as vorzubereiten data:" . file_mime_type . " base64_encoded string
. Verwenden Sie es in der img
src
Attribut. Der folgende Code kann hilfreich sein:
// 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="https://stackoverflow.com/questions/3967515/data:".mime_content_type($img_file).';base64,'.$imgData;
// Echo out a sample image
echo '<img src="'.$src.'">';
-
Wenn die Funktion mime_content_type nicht gefunden werden kann, fügen Sie einfach die Funktion von svogal from hinzu php.net/manual/en/function.mime-content-type.php
– Mario Ruiz
10. Dezember 2013 um 20:00 Uhr
yckart
Nur für den Fall, dass Sie (aus welchen Gründen auch immer) nicht in der Lage sind, zu verwenden curl
Noch file_get_contents
können Sie Folgendes umgehen:
$img = imagecreatefrompng('...');
ob_start();
imagepng($img);
$bin = ob_get_clean();
$b64 = base64_encode($bin);
GoldenGonaz
<img src="data:image/png;base64,<?php%20echo%20base64_encode(file_get_contents("IMAGE URL HERE")) ?>">
Ich habe versucht, diese Ressource zu verwenden, aber ich habe immer wieder eine Fehlermeldung erhalten. Ich fand, dass der obige Code perfekt funktionierte.
Ich habe gerade “BILD-URL HIER” durch die URL Ihres Bildes ersetzt – http://www.website.com/image.jpg
-
Das ist wertvoll
– Santanu
1. Oktober 2021 um 11:11 Uhr
Peter Mortensen
Sehr einfach und häufig zu verwenden:
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="'%20.%20getDataURI('./images/my-file.svg')%20.%20'" alt="">';
echo '<img src="'%20.%20getDataURI('./images/my-file.png')%20.%20'" alt="">';
Hinweis: Der MIME-Typ der Datei wird automatisch hinzugefügt (mithilfe von diese PHP-Dokumentation).
-
Das ist wertvoll
– Santanu
1. Oktober 2021 um 11:11 Uhr
Peter Mortensen
Hier ist der Code zum Hochladen, um ihn zu codieren und in einer MySQL-Datenbank zu speichern:
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 . "')");
}
}
Verwenden Sie zum Anzeigen des Bildes Folgendes:
echo "<img src="data:image/jpeg;base64,%20$image" width=300>";
-
Dies wurde nicht verlangt.
– AlexioVay
3. Februar 2017 um 5:38 Uhr
Wozu willst du das machen?
– Pekka
19. Oktober 2010 um 10:46 Uhr
um es in das src-Attribut des Img-Tags einzubetten
– Flüchtig3
20. Oktober 2010 um 3:31 Uhr
Dies ist ein alter Thread, aber der Vollständigkeit halber: Es ist sehr sinnvoll, Bilder, insbesondere kleine (unter 1k), für die Verwendung in CSS zu codieren. Auf diese Weise sparen Sie eine Anfrage, die aufgrund des Overheads länger dauern würde und möglicherweise sogar größer ist.
– arminrosu
31. Oktober 2012 um 12:46 Uhr