更好更快地显示远程图像:src=";http://URI_IMAGE", 使用php获取文件的base64或cURL的base64
我需要一个清除请,我想知道最有效和最快的方式来显示一个html页面的图像。在加载远程映像之间运行,方法是使用file_get_contents下载,然后转换为base64;或者使用cURL下载,然后转换为base64;或者只在img标记中传递原始url php代码: -base64包含文件内容_获取_更好更快地显示远程图像:src=";http://URI_IMAGE", 使用php获取文件的base64或cURL的base64,php,curl,base64,file-get-contents,Php,Curl,Base64,File Get Contents,我需要一个清除请,我想知道最有效和最快的方式来显示一个html页面的图像。在加载远程映像之间运行,方法是使用file_get_contents下载,然后转换为base64;或者使用cURL下载,然后转换为base64;或者只在img标记中传递原始url php代码: -base64包含文件内容_获取_ $arrContextOptions=array("ssl"=>array("verify_peer"=>false,"verify_peer_name"=>false,));
$arrContextOptions=array("ssl"=>array("verify_peer"=>false,"verify_peer_name"=>false,));
$type_ext = pathinfo($image_path, PATHINFO_EXTENSION);
$imgData = file_get_contents($image_path, false, stream_context_create($arrContextOptions));
$imgBase64Data = base64_encode($imgData);
$imageData = 'data:image/'.$type_ext.';base64,' .$imgBase64Data;
$sizes = getimagesize($imageData);
-base64:cURL
$url = IMAGE_URL;
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 100);
$data = curl_exec($ch);
curl_close($ch);
$imageData = base64_encode($this->curl_get_contents($data));
$mime_types = array(
'gif' => 'image/gif',
'jpg' => 'image/jpg',
'jpeg' => 'image/jpeg',
'png' => 'image/png',
'bmp' => 'image/bmp'
);
$ext = pathinfo($image, PATHINFO_EXTENSION);
if (array_key_exists($ext, $mime_types)) {
$a = $mime_types[$ext];
}
echo "<img src='data: '.$a.';base64,'.$imageData/>";
$url=IMAGE\u url;
$ch=curl_init();
curl_setopt($ch,CURLOPT_头,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_URL,$URL);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,100);
$data=curl\u exec($ch);
卷曲关闭($ch);
$imageData=base64_encode($this->curl_get_contents($data));
$mime_types=数组(
'gif'=>'image/gif',
'jpg'=>'image/jpg',
'jpeg'=>'图像/jpeg',
'png'=>'image/png',
“bmp”=>“图像/bmp”
);
$ext=pathinfo($image,pathinfo_扩展名);
如果(数组\键\存在($ext、$mime\类型)){
$a=$mime_类型[$ext];
}
回声“;
-原始url
echo "<img src='IMAGE_URL'/>";
echo”“;
感谢所有帮助取决于图像的数量和大小。由于编码原因,base64将使图像膨胀约33%。对于较小的图像,这比额外的http调用问题要小。如果图像可以通过cdn(或您的服务器)缓存,那么您最好使用它。如果不是,我建议使用一个支持http/2的服务器来利用多路复用。实际上,这可能是一个自以为是的问题,高度取决于您的设置和要求。此外,在本例中,您将在服务器上获取映像,并通过curl/file\u get\u内容将其“代理”给用户(您的服务器代表用户发出请求,并通过编码服务)。在本例中,最好只使用img标记,因为您完全阻止用户缓存图像(除非网页也被缓存)。