PHP を使用してネットワーク イメージをダウンロードしても表示されない

WBOY
リリース: 2023-05-06 17:27:08
オリジナル
674 人が閲覧しました

インターネット時代の発展に伴い、写真は現代生活に欠かせない要素となっています。 Web サイト開発では、多くの場合、PHP を使用してインターネットから画像をダウンロードし、ページ上に表示する必要があります。ただし、PHP を使用してネットワーク イメージをダウンロードすると、イメージが表示できない状況が発生することがあります。この記事では、この問題について説明し、解決します。

1. ネットワーク イメージをダウンロードする方法

PHP では、ネットワーク イメージをダウンロードするさまざまな方法が提供されています。ここでは、そのうちの 2 つの方法を紹介します:

1. Curl 関数を使用して、画像のダウンロード.

curl は、複数のプロトコルをサポートし、ファイルのダウンロードなどのさまざまなネットワーク操作を実行できる強力なオープン ソース ライブラリです。 curl関数を使用して画像をダウンロードするコードは以下のとおりです。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$data = curl_exec($ch);
curl_close($ch);
ログイン後にコピー

このうち、$urlはダウンロードする画像のリンクアドレスを表します。パラメータを設定するには、curl_setopt 関数を使用します。一般的に使用されるパラメータは次のとおりです。

  • CURLOPT_RETURNTRANSFER: 返された結果を $data 変数に保存するには、1 に設定します。
  • CURLOPT_HEADER: ヘッダー情報が返されないことを示すには、0 に設定します。
  • CURLOPT_FOLLOWLOCATION: リダイレクトをサポートするには 1 に設定します。

このコードは、ファイルの内容を $data 変数に保存します。ファイルをローカルに保存する場合は、file_put_contents 関数を使用できます。

file_put_contents($path, $data);
ログイン後にコピー

ここで、$path はファイルを保存するパスを表します。

2. file_get_contents 関数を使用して画像をダウンロードする

curl 関数の使用に加えて、PHP 組み込み関数 file_get_contents を使用して画像をダウンロードすることもできます。 file_get_contents 関数は、curl 関数と比較して使用が簡単です。

$data = file_get_contents($url);
ログイン後にコピー

このコードは、指定された URL の内容を $data 変数に読み取ります。ローカル ファイルに保存する場合は、curl 関数を使用するのと同じ file_put_contents 関数を使用できます。

2. 画像が表示できない原因と解決方法

PHP を使用してネットワーク画像をダウンロードし、ページ上に表示すると、画像が正常に表示できない場合があります。この状況について考えられる原因と解決策をまとめました。

1. 画像のダウンロードが不完全である

ネットワーク上の理由により、ダウンロードした画像が完全にダウンロードされず、正しく表示されない場合があります。ローカル ファイル サイズと実際のファイル サイズを比較することで、ダウンロードが完了したかどうかを判断できます。コード例は次のとおりです:

$data = curl_exec($ch); // 使用 curl 函数下载文件
$content_length = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); // 获取文件大小
curl_close($ch);

if(strlen($data) != $content_length){ // 判断文件大小与下载大小是否一致
    exit("下载的文件不完整!");
}
ログイン後にコピー

2. 画像形式が正しくありません

場合によっては、ダウンロードされたネットワーク イメージは、正しいイメージ形式ではない可能性があります。現時点では、正しく表示されません。 PHP の組み込み getimagesize 関数を使用して、画像が正しいかどうかを判断できます。

if(@!getimagesize($path)){ // 判断图片是否正确
    unlink($path); // 删除下载的图片
    exit("下载的不是图片文件!");
}
ログイン後にコピー

3. 画像のパスが間違っています

画像のパスが間違っていると、画像が正常に表示されません。このとき、ファイル名、ファイルパスなど、画像のパスが正しいかどうかを確認する必要があります。

4. ブラウザのキャッシュの問題

画像をローカルにダウンロードして保存しても、ブラウザで画像が正常に表示されない場合があり、ブラウザのキャッシュに問題がある可能性があります。キャッシュの問題を回避するには、ブラウザのキャッシュをクリアするか、画像リンクの後にランダムなパラメータを追加してみてください。

<img src="http://example.com/image.jpg?<?php echo time(); ?>" alt="image">
ログイン後にコピー

以上、PHPでネットワーク画像をダウンロードしても表示できない問題の解決方法についてでしたので、皆様のお役に立てれば幸いです。

以上がPHP を使用してネットワーク イメージをダウンロードしても表示されないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!