ホームページ >バックエンド開発 >PHPチュートリアル >画像サイズを効率的に取得するPHP方法、_PHPチュートリアル

画像サイズを効率的に取得するPHP方法、_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:11:471004ブラウズ

phpは画像サイズを取得する効率的な方法を実現します

この記事の例では、PHPで画像サイズを効率的に取得する方法を説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:

php で画像サイズを取得する方法 getimagesize を使用して画像サイズを取得できますが、最初に画像全体の情報を取得してから操作を実行する必要があります。アルゴリズムが改善されました。

このメソッドは、画像サイズ情報を迅速に取得するために使用でき、JPEG 形式の画像のサイズ情報を取得します。テスト後、この機能はすべての JPEG 形式の画像に対して有効ではありません。

1. JPEG形式の画像のサイズ情報を取得します。コードは次のとおりです。


コードをコピーします コードは次のとおりです:
/*
* http://www.bkjia.com
*/
 
// 画像全体をダウンロード/読み取りせずに、JPEG の幅と高さを取得します。
関数 getjpegsize($img_loc) {
    $handle = fopen($img_loc, "rb") または die("無効なファイル ストリーム。");
    $new_block = NULL;
    if(!feof($handle)) {
        $new_block = fread($handle, 32);
        $i = 0;
        if($new_block[$i]=="xFF" && $new_block[$i+1]=="xD8" && $new_block[$i+2]=="xFF" && $new_block[$i+3] =="xE0") {
            $i += 4;
            if($new_block[$i+2]=="x4A" && $new_block[$i+3]=="x46" && $new_block[$i+4]=="x49" && $new_block[$i+ 5]=="x46" && $new_block[$i+6]=="x00") {
                
// ブロック サイズを読み取り、先にスキップして SOF マーカーを探してブロックの循環を開始します
 
                $block_size = unpack("H*", $new_block[$i] . $new_block[$i+1]);
                $block_size = hexdec($block_size[1]);
                while(!feof($handle)) {
                    $i += $block_size;
                    $new_block .= fread($handle, $block_size);
                    if($new_block[$i]=="xFF") {
                        
// 新しいブロックが検出されました。SOF マーカーをチェックします
 
                        $sof_marker = array("xC0", "xC1", "xC2", "xC3", "xC5", "xC6", "xC7", "xC8", "xC9", "xCA", "xCB", " xCD」、「xCE」、「xCF」);
                        if(in_array($new_block[$i+1], $sof_marker)) {
                            
// SOF マーカーが検出されました。幅と高さの情報は、このバイトの後のバイト 4 ~ 7 に含まれます。
 
                            $size_data = $new_block[$i+2] 。 $new_block[$i+3] 。 $new_block[$i+4] 。 $new_block[$i+5] 。 $new_block[$i+6] 。 $new_block[$i+7] 。 $new_block[$i+8];
                            $unpacked = unpack("H*", $size_data);
                            $unpacked = $unpacked[1];
                            $height = hexdec($unpacked[6] . $unpacked[7] . $unpacked[8] . $unpacked[9]);
                            $width = hexdec($unpacked[10] . $unpacked[11] . $unpacked[12] . $unpacked[13]);
                            配列を返します($width, $height);
                        } その他 {
                            
// ブロックマーカーをスキップしてブロックサイズを読み取る
 
                                                          $block_size = unpack("H*", $new_block[$i] . $new_block[$i+1]); $block_size = hexdec($block_size[1]);                                                                        } else {
FALSE を返します。                                                                                                                                                                                                                                                                     }
}
FALSE を返します。 }
?>

2. コード例は次のとおりです:



コードをコピーします

コードは次のとおりです:
$url='http://www.xxxx.com/images/1331189004_28093400.jpg'; $image_content = ファイル_get_contents($url); $image = imagecreatefromstring($image_content); $width = 画像x($image); $height = imagey($image); echo $width.'*'.$height."nr";

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/926873.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/926873.html
技術記事

PHP で画像サイズを効率的に取得する方法 この記事では、PHP で画像サイズを効率的に取得する方法の例について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです: php は写真を取得します...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。