ホームページ >バックエンド開発 >PHPチュートリアル >PHP がリモート画像をダウンロードしてローカルに保存する方法の概要

PHP がリモート画像をダウンロードしてローカルに保存する方法の概要

WBOY
WBOYオリジナル
2016-07-29 09:05:41957ブラウズ

1 ファイル ダウンロード クラス (再開可能なダウンロードをサポート) 1) 機能: 再開可能なダウンロードをサポートし、転送速度を計算でき、転送速度を制御できます

使いやすさ:

function getFileSize($url){ 
$url = parse_url($url); 
if($fp = @fsockopen($url['host'],empty($url['port'])?80:$url['port'],$error)){ 
fputs($fp,"GET ".(empty($url['path'])?'/':$url['path'])." HTTP/1.1\r\n"); 
fputs($fp,"Host:$url[host]\r\n\r\n"); 
while(!feof($fp)){ 
$tmp = fgets($fp); 
if(trim($tmp) == ''){ 
break; 
}else if(preg_match('/Content-Length:(.*)/si',$tmp,$arr)){ 
return trim($arr[1]); 
} 
} 
return null; 
}else{ 
return null; 
} 
} 
echo getFileSize(http://www.dianpub.com/download/xml.rar)

クラス ファイル:

//记录程序开始的时间
$BeginTime=getmicrotime();
function GrabImage($url,$filename="") { 
if($url==""):return false;endif; 
if($filename=="") { 
$ext=strrchr($url,"."); 
if($ext!=".gif" && $ext!=".jpg"):return false;endif; 
$filename=date("dMYHis").$ext; 
} 
ob_start(); 
readfile($url); 
$img = ob_get_contents(); 
ob_end_clean(); 
$size = strlen($img); 
$fp2=@fopen($filename, "a"); 
fwrite($fp2,$img); 
fclose($fp2); 
return $filename; 
} 
$img=GrabImage("http://www.dianpub.com/images/_1978837_detector_ap100.jpg",""); 
if($img):echo '<pre class="brush:php;toolbar:false"><img src="'.$img.'">
';else:echo "false";endif; //记录程序运行结束的时间 $EndTime=getmicrotime(); //返回运行时间 exit($EndTime-$BeginTime);

5. PHP はリモート画像をダウンロードするために GD ライブラリを使用します

if(!empty($saveremoteimg)) 
{ 
$body = stripslashes($body); 
$img_array = array(); 
preg_match_all("/(src|SRC)=[\"|'| ]{0,}(http:\/\/(.*)\.(gif|jpg|jpeg|bmp|png))/isU",$body,$img_array); 
$img_array = array_unique($img_array[2]); 
set_time_limit(0); 
$imgUrl = $img_dir."/".strftime("%Y%m%d",time()); 
$imgPath = $base_dir.$imgUrl; 
$milliSecond = strftime("%H%M%S",time()); 
if(!is_dir($imgPath)) @mkdir($imgPath,0777); 
foreach($img_array as $key =>$value) 
{ 
$value = trim($value); 
$get_file = @file_get_contents($value); 
$rndFileName = $imgPath."/".$milliSecond.$key.".".substr($value,-3,3); 
$fileurl = $imgUrl."/".$milliSecond.$key.".".substr($value,-3,3); 
if($get_file) 
{ 
$fp = @fopen($rndFileName,"w"); 
@fwrite($fp,$get_file); 
@fclose($fp); 
} 
$body = ereg_replace($value,$fileurl,$body); 
} 
$body = addslashes($body); 
}

適用する際には、PHP によって割り当てられるメモリを増やし、大きなメモリ サーバーを使用する必要があることに注意してください

以上、PHPでリモート画像をダウンロードしてローカルに保存する方法を内容も含めてまとめて紹介しましたが、PHPチュートリアルに興味のある友人の参考になれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。