Pouvez-vous s'il vous plaît me guider comment convertir une image d'une URL en encodage base64?
Pouvez-vous s'il vous plaît me guider comment convertir une image d'une URL en encodage base64?
Réponses:
Je pense que ça devrait être:
$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);
gardez à l'esprit que cela agrandira les données de 33% et vous aurez des problèmes avec les fichiers dont la taille dépasse la vôtre memory_limit
.
Utilisez également cette façon de représenter l'image au format de codage base64 ... trouver la fonction PHP file_get_content
et à côté de la fonctionbase64_encode
et obtenir le résultat pour préparer str data:" . file_mime_type . " base64_encoded string
. Utilisez-le dans l'attribut img src. voir le code suivant puis-je vous aider.
// 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")) ?>">
J'essayais d'utiliser cette ressource mais continuais à recevoir une erreur, j'ai trouvé que le code ci-dessus fonctionnait parfaitement.
Vous venez de remplacer l'URL D'IMAGE ICI par l'URL de votre image - http://www.website.com/image.jpg
Très simple et à utiliser couramment:
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="">';
Remarque: Le type MIME du fichier sera ajouté automatiquement (en prenant l'aide de ce documentation PHP ).
Voici le code à télécharger pour l'encoder et l'enregistrer sur 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 . "')");
}
}
Pour afficher l'image, utilisez ceci
echo "<img src='data:image/jpeg;base64, $image' width=300>";
Voici un exemple utilisant un appel cURL. C'est mieux que la fonction file_get_contents () . Bien sûr, utilisez 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
n'est absolument pas "mieux" que file_get_contents
si vous n'avez pas besoin d'ajouter des données supplémentaires à l'appel par ex. authentification. De plus, cela file_get_contents
reviendra à obtenir le contenu d'un fichier local lorsque cela sera possible, ne faisant donc pas un appel réseau inutile.
Vous pouvez également le faire via curl, il vous suffit d'avoir un chemin vers un fichier image et de le passer à la fonction indiquée ci-dessous.
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;
}