file_get_contents を使用して PHP で画像サイズを超高速で取得する方法
多数のリモート画像の画像サイズを取得するのは時間のかかる作業です。特に getimagesize を使用します。ここでは、file_get_contents を利用して画像サイズを迅速に取得する別のアプローチを示します。
カスタム PHP 関数の使用
次の ranger() 関数は、リモートから特定のバイト範囲を読み取ります。画像、クイック サイズ抽出を有効にする:
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;
}
画像サイズの抽出
画像データを取得したら、imagecreatefromstring() と組み込みの画像分析関数を使用してそのサイズを決定できます:
$im = imagecreatefromstring($raw);
$width = imagesx($im);
$height = imagesy($im);
パフォーマンス測定
この方法を使用すると、画像の寸法を取得するプロセスが大幅に高速になります:
$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)";
テスト結果
サンプル画像の取得には 0.20859 秒しかかかりませんでしたその寸法。このアプローチでは、32KB のデータをロードすることが効果的であることが証明されています。この手法を適用すると、リモート イメージのイメージ サイズを迅速に取得でき、getimagesize.
でよく発生するボトルネックを最小限に抑えることができます。免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3