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

php远程图片

发布时间: 2023-05-09 16:26:54

‘壹’ php如何上传图片到远程服务器

可以使用curl这个扩展来实现。
PHP 支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。
libcurl支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。
curl_close() 关闭一个cURL会话。
curl__handle()复制一个cURL句柄和它的所有选项。
curl_errno()返回最后一次的错误号。
curl_error()返回一个保护当前会话最近一次错误的字符串。
curl_escape()返回转义字符串,对给定的字符串进行URL编码。
curl_exec()执行一个cURL会话。
curl_file_create()创建一个CURLFile对象。
curl_getinfo()获取一个cURL连接资源句柄的信息。
curl_init()初始化一个cURL会话。
curl_multi_add_handle()向curl批处理会话中添加单独的curl句柄。
curl_multi_close()关闭一组cURL句柄。
curl_multi_exec()运行当前cURL句柄的子连接
curl_multi_getcontent()如果设置了CURLOPT_RETURNTRANSFER,则返回获取的输出的文本流。
curl_multi_info_read()获取当前解析的cURL的相关传输信息。
curl_multi_init()返回一个新cURL批处理句柄。
curl_multi_remove_handle()移除curl批处理句柄资源中的某个句柄资源。
curl_multi_select()等待所有cURL批处理中的活动连接。
curl_multi_setopt()设置一个批处理cURL传输选项。
curl_multi_strerror()返回描述错误码的字符串文本。
curl_pause()暂停及恢复连接。
curl_reset()重置libcurl的会话句柄的所有选项。
curl_setopt_array()为cURL传输会话批量设置选项。
curl_setopt()设置一个cURL传输选项。
curl_share_close()关闭cURL共享句柄。
curl_share_init()初始化cURL共享句柄。
curl_share_setopt()设置一个共享句柄的cURL传输选项。
curl_strerror()返回错误代码的字符串描述。
curl_unescape()解码URL编码后的字符串。
curl_version()获取cURL版本信息。

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

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

‘叁’ 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);

‘肆’ php怎么把远程图片通过api接口传到另外一个站点上

本地传图片到服务器叫上传,服务器从别的网站获取图片,这叫下载,这比上传还简单
$content = file_get_contents(图片地址);
file_put_contents(保存的路径文件名, $content);

‘伍’ 求用PHP将远程调用的图片地址隐藏的方法

简单一点的是直接用base64_encode编码和base64_decode解码。如下:
//图片输出页 imageOutput.php
<html>
<head>
<title>OutPut Image</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="zh-CN" />
</head>
<body>
<div><img src="http://www.test.com/getImage_process.php?id=<?php echo base64_encode('http://img01.taobaocdn.com/bao/uploaded/i1/T1KNuWXdlgXXXBSUbb_095424.jpg_460x460.jpg')?>"/></div>
</body>
</html>
//图片处理页 getImage_process.php
<?php
$url = base64_decode ($_GET['id']);
echo file_get_contents($url);

//End_php

‘陆’ php保存远程图片到本地

$img = file_get_contents('http://www.91cici.com/images/logo.gif');
file_put_contents('test.gif',$img);

热点内容
捷达方向机安全登录密码是多少 发布:2025-07-19 00:57:37 浏览:688
夜魔迅雷下载ftp 发布:2025-07-19 00:39:29 浏览:94
增值税票安全接入服务器地址 发布:2025-07-19 00:20:45 浏览:481
solidworkspcb服务器地址 发布:2025-07-18 22:50:35 浏览:816
怎么在堆叠交换机里配置vlan 发布:2025-07-18 22:42:35 浏览:625
java调用别人的接口 发布:2025-07-18 22:37:35 浏览:435
服务器四个节点如何联网 发布:2025-07-18 22:36:02 浏览:273
华强北什么地方休安卓手机 发布:2025-07-18 22:24:56 浏览:736
数据库的根本目标 发布:2025-07-18 21:37:50 浏览:939
压缩机的流速 发布:2025-07-18 21:37:40 浏览:408