當前位置:首頁 » 編程語言 » 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)
程序最上面加,表示程序運行時間無限

其實程序中還應該判斷一下是否有這個圖片

熱點內容
linux命令安裝rpm 發布:2024-05-08 09:37:37 瀏覽:643
什麼是逆演算法 發布:2024-05-08 09:28:17 瀏覽:208
泰康平衡配置跟行業配置哪個好 發布:2024-05-08 09:19:09 瀏覽:598
動態創建存儲過程 發布:2024-05-08 09:19:01 瀏覽:52
點贊熊源碼 發布:2024-05-08 08:49:44 瀏覽:458
壓縮性胸悶 發布:2024-05-08 08:18:18 瀏覽:528
電腦嗶哩嗶哩pc端的緩存 發布:2024-05-08 08:17:05 瀏覽:171
王者伺服器崩潰估計什麼時候好 發布:2024-05-08 08:16:51 瀏覽:575
qj壓縮機 發布:2024-05-08 08:10:13 瀏覽:842
dhcp伺服器可以分配什麼參數 發布:2024-05-08 08:07:36 瀏覽:959