header("Content-type:text/html ; charset=utf-8"); if (!empty($_POST ['submit'])){
$url = $_POST['url']
//相対パスで画像を取得する操作
$url_fields = parse_url($url); = $url_fields[ 'host'];
$base_url = substr($url,0,strrpos($url, '/')+1);
//Web コンテンツを取得する
//プロキシ サーバーを設定する
$opts = array ('http' =>array('request_fulluri'=>true));
$context = stream_context_create($opts);
$content = file_get_contents($url,false,$context); 、すべて一致 文字列は配列に保存されます $matches
$reg = "/
/i";
preg_match_all($reg, $content , $matches);
$count = count($matches[0]);
for ($i=0; $i/*すべての画像 URL を小文字に変換します
*$matches[ 1][ $i] = strto lower($matches[1][$i]);
*/
//画像が相対パスの場合はフルパスに変換します
if (!strpos('a'. $matches[1][$ i], 'http')){
//'/'は0番目なので
if (strpos('a'.$matches[1][$i], '/') ){
$matches[1][$i] = 'http://'.$main_url.$matches[1][$i];
}else{
$matches[1][$i] = $base_url .$matches[1] [$i];
}
}
}
//重複する画像をフィルタリングする
$img_arr = array_unique($matches[1]);
//画像ダウンロード クラスをインスタンス化する
$getImg = new DownImage ();
$ url_count = count($img_arr);
for ($i$getImg->source = $img_arr[$i]; >save_address = ' ./pic/';
$file = $getImg->download();
}
echo "ダウンロードが完了しました。ハハ、シンプルにしてください! ";
}
class DownImage{
public $source;//リモート画像 URL
public $save_address;//ローカル アドレスを保存
public $set_extension; //画像拡張子を設定
public $quality; //画像 (0~100、100 が最適、デフォルトは約 75)
//ダウンロードメソッド (GD ライブラリイメージダウンロードを選択)
public function download(){
//リモート画像情報を取得
$info = @getimagesize ($this->source) ;
//画像拡張子を取得します
$mime = $info['mime'];
$type = substr(strrchr($mime, '/'),
//画像の種類ごとに異なる画像を選択する 関数の生成と保存
switch($type){
case 'jpeg':
$img_create_func = 'imagejpeg';
$new_img_ext = 'jpg'; image_quality = isset($this->quality) : 100;
$img_create_func = 'imagecreatefrompng';
$new_img_ext; 'png';
ケース 'bmp':
$img_save_func = 'imagebmp';
ケース 'gif'; _create_func = 'imagecreatefromgif';
$im g_save_func = 'imagegif';
case 'vnd.wap.wbmp':
$img_save_func wbmp';
$new_img_ext = 'bmp';
ケース 'xbm':
$img_save_func = 'xbm';
デフォルト:
$img_create_func = 'imagecreatefromjpeg' ;
$img_save_func = 'imagejpeg';
$new_img_ext = 'jpg';
//拡張子が設定されているかどうかに応じてローカルファイル名を合成します
if (isset($this->set_extension) ){
$ext = strrchr($this ->source,".");
$strlen = strlen($ext);
$newname =basename(substr($this->source,0,-$strlen) )).'.'.$new_img_ext;
}else{
$newname =basename($this->source)
}
//ローカル ファイル パスを生成
$save_address = $this->save_address.$新しい名前;
$img = @$img_create_func($this->source);
if (isset($image_quality)){
$save_img = @$img_save_func($img,$save_address,$image_quality);
$save_img = @$img_save_func($img ,$save_address);
return $save_img;
?>
リモート URL アドレス: フォーム
実行結果は図に示すとおりです:
この例では、ダウンロードした写真は現在のディレクトリの pic フォルダーに保存されます。
http://www.bkjia.com/PHPjc/325724.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/325724.html技術記事 PHP コードは次のとおりです。 次のようにコードをコピーします。 ?php header("Content-type:text/html ; charset=utf-8") if (!empty($_POST['submit']){ $ url = $_POST ['url'] //相対パス画像を取得するには...