當前位置:首頁 » 編程語言 » 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-18 21:37:50 瀏覽:937
壓縮機的流速 發布:2025-07-18 21:37:40 瀏覽:406
三星怎麼取消手機密碼 發布:2025-07-18 21:33:50 瀏覽:629
安卓手機耳機如何彈窗顯示電量 發布:2025-07-18 21:20:53 瀏覽:59
雲伺服器搭建需要什麼工具 發布:2025-07-18 20:51:08 瀏覽:322
如何提高手機緩存速度 發布:2025-07-18 20:24:48 瀏覽:237
vba讀取資料庫數據 發布:2025-07-18 20:24:48 瀏覽:608
shell解壓zip 發布:2025-07-18 20:20:36 瀏覽:859
安卓泰拉瑞亞去哪裡買 發布:2025-07-18 20:01:05 瀏覽:694
flash編譯器 發布:2025-07-18 19:49:38 瀏覽:487