Lütfen bir resmi bir URL'den base64 kodlamasına nasıl dönüştürebilirim?
Lütfen bir resmi bir URL'den base64 kodlamasına nasıl dönüştürebilirim?
Yanıtlar:
Bence olmalı:
$path = 'myfolder/myimage.png';
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
Kolay:
$imagedata = file_get_contents("/path/to/image.jpg");
// alternatively specify an URL, if PHP settings allow
$base64 = base64_encode($imagedata);
bunun verileri% 33 büyüteceğini ve boyutu sizin olan dosyalarınızda sorun yaşayacağınızı unutmayın memory_limit
.
Base64 kodlama biçimindeki görüntüyü temsil etmek için de bu yolu kullanın ... PHP işlevini bulun file_get_content
ve işlevi kullanınbase64_encode
ve str'yi hazırlamak için sonuç alın data:" . file_mime_type . " base64_encoded string
. İmg src özelliğinde kullanın. aşağıdaki koda bakınız size yardımcı olabilir.
// 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")) ?>">
Bu kaynağı kullanmaya çalışıyordum ama hata almaya devam ettim, yukarıdaki kodun mükemmel çalıştığını gördüm.
BURADA IMAGE URL'sini resminizin URL'si ile değiştirdiniz - http://www.website.com/image.jpg
Çok basit ve yaygın olarak kullanılacak:
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="">';
Not: Dosyanın Mime Tipi otomatik olarak eklenecektir (bu PHP dokümanlarından yardım alınarak ).
Kodlamak ve MySQL'e kaydetmek için yükleme kodu
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 . "')");
}
}
Resmi göstermek için bunu kullanın
echo "<img src='data:image/jpeg;base64, $image' width=300>";
İşte cURL çağrısı kullanan bir örnek .. Bu file_get_contents () fonksiyonundan daha iyidir . Tabii ki, base64_encode () kullanın
$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
file_get_contents
çağrıya ek veri eklemeniz gerekmediği sürece kesinlikle "daha iyi" değildir . kimlik doğrulaması. Dahası, file_get_contents
mümkün olduğunda yerel bir dosyanın içeriğini almaya geri döner, böylece işe yaramaz bir ağ çağrısı yapmaz.
Bunu curl ile de yapabilirsiniz, sadece bir görüntü dosyasına giden bir yola ihtiyacınız var ve aşağıda verilen işleve iletmeniz yeterlidir.
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;
}