当前位置:首页 » 编程语言 » phpcurl获取图片

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)
程序最上面加,表示程序运行时间无限

其实程序中还应该判断一下是否有这个图片

热点内容
中国移动用什么服务密码 发布:2024-05-20 00:52:10 浏览:695
make编译输出 发布:2024-05-20 00:37:01 浏览:67
4200存储服务器 发布:2024-05-20 00:20:35 浏览:160
解压小生活 发布:2024-05-20 00:15:03 浏览:143
粘土小游戏服务器ip 发布:2024-05-20 00:14:00 浏览:196
魔兽世界如何快速增加服务器 发布:2024-05-19 23:53:37 浏览:694
安卓手机如何转入苹果手机内 发布:2024-05-19 23:50:35 浏览:405
安卓哪个能安装血染小镇 发布:2024-05-19 23:45:57 浏览:901
tensorflowmac编译 发布:2024-05-19 23:28:59 浏览:702
sqlmaxvarchar 发布:2024-05-19 23:24:02 浏览:703