更好更快地显示远程图像:src=";http://URI_IMAGE", 使用php获取文件的base64或cURL的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,));

我需要一个清除请,我想知道最有效和最快的方式来显示一个html页面的图像。在加载远程映像之间运行,方法是使用file_get_contents下载,然后转换为base64;或者使用cURL下载,然后转换为base64;或者只在img标记中传递原始url

php代码: -base64包含文件内容_获取_

$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标记,因为您完全阻止用户缓存图像(除非网页也被缓存)。