很多时候,采集一些内容的时候,都会采集到图片。想把图片存在服务器上吧,空间不太够,不存吧,通过图片人家就能看错,你这内容是哪里来的。反正这是我的一些想法。
其实我最想表达的是,如何用自己的域名显示别人的图片!是不是很直观,不保证全部有用。但是应该会有和我一样想法的人吧。
但是我这个方法有个缺陷。无法缓存,如果有大佬知道如何怎么解决。麻烦请告诉我。谢谢!
说明
我一般是先把源图片地址保存到数据库。然后通过自己的域名访问我们写好的页面调用这个图片。当然这个图片要是你能访问的,如果的墙外的图片链接,那请把你的代码也存放到国外服务器。
代码说明
// 请一定要加这个,不然显示不出来
header("Content-Type: image/jpeg;text/html; charset=utf-8");
$img = file_get_contents('你要显示的图片地址');
echo $img;
exit();
{/tabs-pane}
{tabs-pane label="方案二"}
// 请一定要加这个,不然显示不出来
header("Content-Type: image/jpeg;text/html; charset=utf-8");
@ob_end_clean();
@readfile($res['src']);
@flush();
@ob_flush();
exit();
{/tabs-pane}
{tabs-pane label="方案三"}
// 请一定要加这个,不然显示不出来
function _curl($url, $referurl = 'https://www.baidu.com/')
{
$ch = curl_init();
$header = array(
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding: gzip, deflate, br',
'Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-US;q=0.7',
'Connection: keep-alive',
'sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"',
'sec-ch-ua-mobile: ?0',
'Sec-Fetch-Dest: document',
'Sec-Fetch-Mode: navigate',
'Sec-Fetch-Site: none',
'Sec-Fetch-User: ?1',
'Upgrade-Insecure-Requests: 1',
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36'
);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $url); //要抓取的网址
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 设置超时限制防止死循环
curl_setopt($ch, CURLOPT_HEADER, 0); // 查询显示返回的Header区域内容
curl_setopt($ch, CURLOPT_REFERER, $referurl); //模拟来源网址
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36");
//$useragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36";
//curl_setopt($ch, CURLOPT_USERAGENT, $useragent); //模拟常用浏览器的useragent
$page_content = curl_exec($ch);
curl_close($ch);
return $page_content;
}
header("Content-Type: image/jpeg;text/html; charset=utf-8");
$referurl = parse_url($res['src']);
$referurl = $referurl['scheme'] . '://' . $referurl['host'] . ($referurl['port'] ? ':' . $referurl['port'] : '') . '/';
$img = _curl($res['src'], $referurl);
echo $img;
exit();
{/tabs-pane}
方案一显示 | 方案二显示 | 方案三显示 |
---|---|---|
评论 (0)