Können Sie mir bitte zeigen, wie ich ein Bild von einer URL in eine Base64-Codierung konvertieren kann?
Können Sie mir bitte zeigen, wie ich ein Bild von einer URL in eine Base64-Codierung konvertieren kann?
Antworten:
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);
Einfach:
$imagedata = file_get_contents("/path/to/image.jpg");
// alternatively specify an URL, if PHP settings allow
$base64 = base64_encode($imagedata);
Beachten Sie, dass dadurch die Daten um 33% vergrößert werden und Sie Probleme mit Dateien haben, deren Größe Ihre überschreitet memory_limit
.
Verwenden Sie diese Methode auch, um das Bild im Base64-Codierungsformat darzustellen. Suchen Sie die PHP-Funktion file_get_content
und verwenden Sie anschließend die Funktionbase64_encode
und Ergebnis erhalten, um str as vorzubereiten data:" . file_mime_type . " base64_encoded string
. Verwenden Sie es im Attribut img src. siehe folgenden Code kann ich für Sie helfen.
// 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")) ?>">
Ich habe versucht, diese Ressource zu verwenden, habe aber immer wieder einen Fehler erhalten. Ich habe festgestellt, dass der obige Code perfekt funktioniert.
Ersetzen Sie einfach die BILD-URL HIER durch die URL Ihres Bildes - http://www.website.com/image.jpg
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="'.getDataURI('./images/my-file.svg').'" alt="">';
echo '<img src="'.getDataURI('./images/my-file.png').'" alt="">';
Hinweis: Der Mime-Typ der Datei wird automatisch hinzugefügt (Hilfe aus dieser PHP-Dokumentation ).
Hier ist der Code zum Hochladen, um ihn zu codieren und in MySQL 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 diese Option, um das Bild anzuzeigen
echo "<img src='data:image/jpeg;base64, $image' width=300>";
Hier ist ein Beispiel für die Verwendung eines cURL-Aufrufs. Dies ist besser als die Funktion file_get_contents () . Verwenden Sie natürlich 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
ist absolut nicht "besser" als es file_get_contents
sei denn, Sie müssen dem Anruf ex zusätzliche Daten hinzufügen. Authentifizierung. Darüber hinaus file_get_contents
wird nach Möglichkeit darauf zurückgegriffen, den Inhalt einer lokalen Datei abzurufen, sodass kein nutzloser Netzwerkanruf erfolgt.
Sie können dies auch über Curl tun. Sie benötigen lediglich einen Pfad zu einer Bilddatei und übergeben ihn an die unten angegebene Funktion.
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;
}