ホームページ > バックエンド開発 > PHPチュートリアル > PHP で gd ライブラリを使用して、webpage_PHP チュートリアルのすべての画像をダウンロードします

PHP で gd ライブラリを使用して、webpage_PHP チュートリアルのすべての画像をダウンロードします

WBOY
リリース: 2016-07-13 09:53:40
オリジナル
878 人が閲覧しました

Webページ内のすべての画像をダウンロードするには、phpのgdライブラリを使用します

この記事では、主に、Webページ内のすべての画像をダウンロードするためのphpのgdライブラリの使用方法を紹介します。この記事では、実装コードを直接提供します。必要な場合は参照してください

初期の PHP チュートリアルで、PHP gd ライブラリがリモート画像のダウンロードを実現できると述べましたが、Web ページ上のすべての画像をダウンロードしたい場合も、原理は同じです。すべての画像 URL が公開されたら、ループでそれらをダウンロードできます。ネットワーク リソースを参照して、gd ライブラリの画像ダウンロード クラスを特別に作成しました。

phpのコードは以下の通りです

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

header("Content-type:text/html ; charset=utf-8");

if (!empty($_POST['submit'])){

$url = $_POST['url'];

//相対パスで画像を取得する操作

$url_fields = parse_url($url);

$main_url = $url_fields['ホスト'];

$base_url = substr($url,0,strrpos($url, '/')+1);

//ウェブコンテンツを取得する

//プロキシサーバーを設定します

$opts = array('http'=>array('request_fulluri'=>true));

$context = stream_context_create($opts);

$content = file_get_contents($url,false,$context);

//img タグを照合し、一致するすべての文字列を配列 $matches に保存します

$reg = "/PHP で gd ライブラリを使用して、webpage_PHP チュートリアルのすべての画像をダウンロードします/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];

}その他{

$matches[1][$i] = $base_url.$matches[1][$i];

}

}

}

//重複画像をフィルタリングする

$img_arr = array_unique($matches[1]);

//画像ダウンロードクラスをインスタンス化します

$getImg = 新しい DownImage();

$url_count = count($img_arr);

for ($i=0; $i

$getImg->source = $img_arr[$i];

$getImg->save_address = './pic/';

$file = $getImg->download();

}

エコー「ダウンロードが完了しました!ははは、簡単です!」;

}

クラスダウンイメージ{

public $source;//リモート画像URL

public $save_address;//ローカルアドレスを保存

public $set_extension //画像拡張子を設定します

public $quality; //画像の品質 (0~100、100 が最高、デフォルトは約 75)

//ダウンロード方法(GDライブラリイメージダウンロードを選択)

パブリック関数 download(){

//リモート画像情報を取得します

$info = @getimagesize($this->source);

//画像拡張子を取得

$mime = $info['mime'];

$type = substr(strrchr($mime, '/'), 1);

//画像タイプごとに異なる画像生成および保存機能を選択します

スイッチ($type){

ケース「jpeg」:

$img_create_func = 'imagecreatefromjpeg';

$img_save_func = 'imagejpeg';

$new_img_ext = 'jpg';

$image_quality = isset($this->quality) : 100;

休憩;

ケース「png」:

$img_create_func = 'imagecreatefrompng';

$img_save_func = 'imagepng';

$new_img_ext = 'png';

休憩;

ケース「bmp」:

$img_create_func = 'imagecreatefrombmp';

$img_save_func = 'imagebmp';

$new_img_ext = 'bmp';

休憩;

ケース「gif」:

$img_create_func = 'imagecreatefromgif';

$img_save_func = 'imagegif';

$new_img_ext = 'gif';

休憩;

ケース「vnd.wap.wbmp」:

$img_create_func = 'imagecreatefromwbmp';

$img_save_func = 'imagewbmp';

$new_img_ext = 'bmp';

休憩;

ケース「xbm」:

$img_create_func = 'imagecreatefromxbm';

$img_save_func = 'imagexbm';

$new_img_ext = '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;

}その他{

$newname = ベース名($this->ソース);

}

//ローカルファイルパスを生成します

$save_address = $this->save_address.$newname;

$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);

}

$save_img を返す;

}

}

?>

<フォームメソッド="POST" アクション="">

リモート URL アドレス:

実行結果は図に示すとおりです:

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1000115.html技術記事この記事では主に、Web ページ内のすべての画像をダウンロードするための php の gd ライブラリの使用方法を紹介します。この記事では、必要な実装コードを直接提供します。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート