当前位置:首页 » 编程语言 » php远程抓取图片

php远程抓取图片

发布时间: 2022-05-06 16:06:56

A. 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);

B. 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);

C. Php 获取远程服务器相同前缀图片地址

写出下面的源码,php远程抓取图片小程序。可以读取css文件并抓取css代码中的背景图片,下面这段代码也是针对抓取css中图片而编写的。
<?php<http://hounwang.com/lesson.html>
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ERROR|E_WARNING);
//全局配置
$fromFile = "aaa.css"; //要抓取的文件
$savePath = "ttttttttt"; //保存路径
$fromDomain = "http://www.xxx.com/"; //要抓取的域名
//读取css样式并且分离出所有image的url
$str = file_get_contents($fromFile);
$strArr = explode("url(",$str);
$i = 0;
foreach($strArr as $val){
$val1 = explode(")",$val);
if(strpos($val1[0],'jpg')||strpos($val1[0],'png')||strpos($val1[0],'gif'))
$imgUrl[$i++] = $val1[0];
}
//PS:上面可以用正则的,但是我觉得这样也不错
//开始抓取
foreach($imgUrl as $url){
if($url=="") continue;
$filename = $savePath.$url;
$url = $fromDomain.$url;
getImage($url,$filename);
}
function getImage($url,$filename){
ob_start();
$context = stream_context_create(
array (
'http' => array (
'follow_location' => false // don't follow redirects
)
)
);
//请确保php.ini中的fopen wrappers已经激活
readfile( $url,false,$context);
$img = ob_get_contents();
ob_end_clean();
$fp2 = @fopen($filename,"a");
fwrite($fp2,$img);
fclose($fp2);
echo $filename." ok √<br/>";
}
?>
然后,你指定的文件夹下面都是图片
需要设置一个域名或者是使用IP进行访问然后将image输出图片的地址替换成带有域名或者是IP的imageURL服务路径才能正常访问,否则是无法访问的。

更多问题到问题求助专区《http://bbs.hounwang.com/》

D. PHP如何获取服务器图片

你在上传图片的时候,把图片地址存到数据库内,直接查询输出就好了
如果不是通过代码上传的,www文件夹是根目录文件夹,图片地址为:http://你的域名/img/name.jpg

E. thinkphp用file_put_contents()保存远程图片到服务器

你在逗我,怎么可能直接用程序直接写入另一个服务器。

我的思路是(没有试验过)

  1. 转换为图片为二进制文件进行上传到另一个服务器进行处理保存

  2. 转换图片为base64 用curl请求服务器进行处理

  3. 模拟表单请求


F. php一个头疼的问题,关于图片远程抓取

估计是服务器分配给PHP的资源不够吧....
可以将php.ini中的memory_limit调大一点试试.

G. php如何同时获取远程服务器图片和响应头

获取图片和响应头, 一般就是将图片保存成文件, 响应头, 可以分析返回数据,如果是cookie的话,分析cookie.显示到首页上,就需要你将图片的URL修改对应的模板,数据库或者实体文件了.

H. PHP下载远程图片jpg 格式,

<?php
header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Accept-Length:".filesize($path));
header("Content-Disposition:attachment;filename=".basename($path));
readfile($path);
?>

I. php如何通过URL批量下载图片,这些图片是设计作品,

如果URL有规则,那么可以考虑js做前端,php做后端

具体思路如下

js发送ajax请求给php,php抓取图片,抓取完毕响应前端,前端提示完成(或者更新进度条),然后前端js再次发起ajax请求,直至全部抓取完毕


对了 url有规律的话 用迅雷下载也是挺不错的

J. 在PHP中,抓取远程图片到本地,你会用什么函数

实现单个图片抓取可以使用file_get_contents();
考虑到并行的话,python 爬虫效率比较高。

热点内容
phpcgi启动 发布:2024-05-20 22:38:57 浏览:578
嵌入式存储服务器 发布:2024-05-20 22:14:55 浏览:395
sql分组条件 发布:2024-05-20 22:08:49 浏览:16
配网web服务器一个IP地址 发布:2024-05-20 22:07:16 浏览:725
电脑板服务器地址175 发布:2024-05-20 22:03:30 浏览:959
编译静态函数时 发布:2024-05-20 21:51:20 浏览:351
如何在别人的服务器加模组 发布:2024-05-20 21:28:29 浏览:61
服务器的bios芯片电脑店有吗 发布:2024-05-20 21:28:26 浏览:224
剪辑电影什么配置 发布:2024-05-20 21:25:17 浏览:818
解压神器中的诡异事件 发布:2024-05-20 21:17:59 浏览:7