file_get_contents を使用して PHP で画像サイズを超高速で取得する方法
多数のリモート画像の画像サイズを取得するのは時間のかかる作業です。特に getimagesize を使用します。ここでは、file_get_contents を利用して画像サイズを迅速に取得する別のアプローチを示します。
カスタム PHP 関数の使用
次の ranger() 関数は、リモートから特定のバイト範囲を読み取ります。画像、迅速なサイズ抽出を可能にする:
<code class="php">function ranger($url){ $headers = array( "Range: bytes=0-32768" ); $curl = curl_init($url); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($curl); curl_close($curl); return $data; }</code>
画像サイズの抽出
画像データが取得されたら、imagecreatefromstring() と build-画像解析関数:
<code class="php">$im = imagecreatefromstring($raw); $width = imagesx($im); $height = imagesy($im);</code>
パフォーマンス測定
この方法を使用すると、画像の寸法を取得するプロセスが大幅に高速化されます:
<code class="php">$start = microtime(true); $url = "http://news.softpedia.com/images/news2/Debian-Turns-15-2.jpeg"; $raw = ranger($url); $im = imagecreatefromstring($raw); $width = imagesx($im); $height = imagesy($im); $stop = round(microtime(true) - $start, 5); echo $width." x ".$height." ({$stop}s)";</code>
テスト結果
サンプル画像の寸法の取得には、わずか 0.20859 秒かかりました。このアプローチでは、32KB のデータをロードすることが効果的であることが証明されています。この手法を適用すると、リモート イメージのイメージ サイズを迅速に取得でき、getimagesize でよく発生するボトルネックを最小限に抑えることができます。
以上がPHP で画像サイズの取得を高速化する方法: file_get_contents が解決策ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。