phpcurl获取图片
发布时间: 2023-03-18 17:05:12
1. php怎样根据URL获取图片真实地址
楼主可以用curl把这个图片文件的内容拿出来,然后用file_put_contents()函数把他写入一个文件里,格式为你想要保存的图片格式,写个例子给你吧:
首先用curl拿到这个图片的代码:
$url=测试URL地址
$curl=curl_init($url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,10);
$content=curl_exec($curl);
curl_close($curl);
file_put_contents('图片保存的路径+a.jpg',$content);
大概就这样子了,我就不测试了,楼主测试一下可行不,file_put_contents()函数不明白就查查手册,如果有报错什么的就带上报错信息回复我吧。
2. php 读取图片并输出
<?php
header('Content-Type:image/png');
$url="http://hbyw.e21.e.cn/global/gd.php";//图片链接
$ch=curl_init();
//Cookie:PHPSESSID=
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_COOKIE,'PHPSESSID=');//如果不需要cookies就删除这条语句
curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch,CURLOPT_TIMEOUT,0);//忽略超时
curl_setopt($ch,CURLOPT_NOBODY,false);
$str=curl_exec($ch);
curl_close($ch);
3. php怎么高效获取远程图片尺寸
/**
*获取远程图片的宽高和体积大小
*
*@paramstring$url远程图片的链接
*@paramstring$type获取远程图片资源的方式,默认为curl可选fread
*@paramboolean$isGetFilesize是否获取远程图片的体积大小,默认false不获取,设置为true时$type将强制为fread
*@returnfalse|array
*/
functionmyGetImageSize($url,$type='curl',$isGetFilesize=false)
{
//若需要获取图片体积大小则默认使用fread方式
$type=$isGetFilesize?'fread':$type;
if($type=='fread'){
//或者使用socket二进制方式读取,需要获取图片体积大小最好使用此方法
$handle=fopen($url,'rb');
if(!$handle)returnfalse;
//只取头部固定长度168字节数据
$dataBlock=fread($handle,168);
}
else{
//据说CURL能缓存DNS效率比socket高
$ch=curl_init($url);
//超时设置
curl_setopt($ch,CURLOPT_TIMEOUT,5);
//取前面168个字符通过四张测试图读取宽高结果都没有问题,若获取不到数据可适当加大数值
curl_setopt($ch,CURLOPT_RANGE,'0-167');
//跟踪301跳转
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
//返回结果
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$dataBlock=curl_exec($ch);
curl_close($ch);
if(!$dataBlock)returnfalse;
}
//将读取的图片信息转化为图片路径并获取图片信息,经测试,这里的转化设置jpeg对获取png,gif的信息没有影响,无须分别设置
//有些图片虽然可以在浏览器查看但实际已被损坏可能无法解析信息
$size=getimagesize('data://image/jpeg;base64,'.base64_encode($dataBlock));
if(empty($size)){
returnfalse;
}
$result['width']=$size[0];
$result['height']=$size[1];
//是否获取图片体积大小
if($isGetFilesize){
//获取文件数据流信息
$meta=stream_get_meta_data($handle);
//nginx的信息保存在headers里,apache则直接在wrapper_data
$dataInfo=isset($meta['wrapper_data']['headers'])?$meta['wrapper_data']['headers']:$meta['wrapper_data'];
foreach($dataInfoas$va){
if(preg_match('/length/iU',$va)){
$ts=explode(':',$va);
$result['size']=trim(array_pop($ts));
break;
}
}
}
if($type=='fread')fclose($handle);
return$result;
}
//测试的图片链接
echo'<pre>';
$result=myGetImageSize('http://s6.mogujie.cn/b7/bao/120630/2kpa6_kqywusdel5bfqrlwgfjeg5sckzsew_345x483.jpg_225x999.jpg','curl');
print_r($result);
echo'<hr/>';
$result=myGetImageSize('http://s5.mogujie.cn/b7/bao/120629/6d3or_kqytasdel5bgevsugfjeg5sckzsew_801x1193.jpg','fread');
print_r($result);
echo'<hr/>';
$result=myGetImageSize('https://gss0..com/7LsWdDW5_xN3otqbppnN2DJv/zhengmingjiang/pic/item/1c5f338c6d22d797503d92f9.jpg','fread',true);
print_r($result);
echo'<hr/>';
$result=myGetImageSize('http://www.vegandocumentary.com/wp-content/uploads/2009/01/.png','curl',true);
print_r($result);
echo'<hr/>';
$result=myGetImageSize('http://jiaoyou.ai9475.com/front/templates/jiaoyou/styles/default/image/ad_pic_1.gif','fread');
print_r($result);
4. php怎么用curl抓取网页上的内容
你curl拿到的是整个网页html,如果想拿某部分内容,需要用正则提取
5. PHP CURL 下载多图。部分图片没下载
set_time_limit(0)
程序最上面加,表示程序运行时间无限
其实程序中还应该判断一下是否有这个图片
热点内容