¿Me pueden guiar cómo puedo convertir una imagen de una URL a codificación base64?
¿Me pueden guiar cómo puedo convertir una imagen de una URL a codificación base64?
Respuestas:
Creo que debería ser:
$path = 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
Fácil:
$imagedata = file_get_contents("/path/to/image.jpg");
// alternatively specify an URL, if PHP settings allow
$base64 = base64_encode($imagedata);
tenga en cuenta que esto aumentará los datos en un 33% y tendrá problemas con los archivos cuyo tamaño supere el suyo memory_limit
.
Úselo también para representar la imagen en formato de codificación base64 ... busque la función PHP file_get_content
y luego la función de usobase64_encode
y obtener resultado para preparar str as data:" . file_mime_type . " base64_encoded string
. Úselo en el atributo img src. vea el siguiente código, ¿puedo ayudarlo?
// 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")) ?>">
Estaba tratando de usar este recurso pero seguía recibiendo un error, encontré que el código anterior funcionaba perfectamente.
Acabo de reemplazar la URL de IMAGEN AQUÍ con la URL de su imagen: http://www.website.com/image.jpg
Muy simple y de uso común:
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: El tipo Mime del archivo se agregará automáticamente (tomando la ayuda de esta documentación de PHP ).
Aquí está el código para cargar para codificar y guardarlo en 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 . "')");
}
}
Para mostrar la imagen usa esto
echo "<img src='data:image/jpeg;base64, $image' width=300>";
Aquí hay un ejemplo usando una llamada cURL. Esto es mejor que la función file_get_contents () . Por supuesto, use 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
no es absolutamente "mejor" que a file_get_contents
menos que necesite agregar datos adicionales a la llamada, ej. autenticación. Además, file_get_contents
recurrirá a obtener el contenido de un archivo local cuando sea posible, por lo tanto, no hará una llamada de red inútil.
También puede hacer esto a través de curl, solo necesita una ruta a un archivo de imagen y pasarlo a la función dada a continuación.
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;
}