国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

php實(shí)現(xiàn)高效獲取圖片尺寸的方法

2024-05-04 23:28:51
字體:
供稿:網(wǎng)友
這篇文章主要介紹了php實(shí)現(xiàn)高效獲取圖片尺寸的方法,可以快速高效的獲取圖片的尺寸,是非常實(shí)用的技巧,需要的朋友可以參考下
 
 

本文實(shí)例講述了php實(shí)現(xiàn)高效獲取圖片尺寸的方法。分享給大家供大家參考。具體分析如下:

php 獲取圖片尺寸的方法我們可以使用 getimagesize 獲取圖片尺寸,但是效率是很低的,首先需要獲取整個(gè)的圖片信息,然后再進(jìn)行操作,下面的例子更科學(xué)算法更好,我們一起來看看吧.

方法可以用于快速獲取圖片尺寸信息,獲取JPEG格式圖片的尺寸信息,并且不需要下載讀取整個(gè)圖片,經(jīng)測(cè)試這個(gè)函數(shù)不是對(duì)所有JPEG格式的圖片都有效.

1.獲取JPEG格式圖片的尺寸信息,代碼如下:

復(fù)制代碼代碼如下:
<?php 
/* 
* http://m.survivalescaperooms.com
*/ 
 
// Retrieve JPEG width and height without downloading/reading entire image. 
function getjpegsize($img_loc) { 
    $handle = fopen($img_loc, "rb") or die("Invalid file stream."); 
    $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") { 
                 
// Read block size and skip ahead to begin cycling through blocks in search of SOF marker 
 
                $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") { 
                         
// New block detected, check for SOF marker 
 
                        $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 marker detected. Width and height information is contained in bytes 4-7 after this byte. 
 
                            $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]); 
                            return array($width, $height); 
                        } else { 
                             
// Skip block marker and read block size 
 
                            $i += 2; 
                            $block_size = unpack("H*", $new_block[$i] . $new_block[$i+1]); 
                            $block_size = hexdec($block_size[1]); 
                        } 
                    } else { 
                        return FALSE; 
                    } 
                } 
            } 
        } 
    } 
    return FALSE; 

?>

2.實(shí)例代碼如下:
復(fù)制代碼代碼如下:
$url='http://www.xxxx.com/images/1331189004_28093400.jpg'; 
$image_content = file_get_contents($url); 
$image = imagecreatefromstring($image_content); 
$width = imagesx($image); 
$height = imagesy($image); 
echo $width.'*'.$height."nr";

 

希望本文所述對(duì)大家的PHP程序設(shè)計(jì)有所幫助。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁城县| 张家口市| 宜兰市| 红安县| 临泽县| 宝应县| 海南省| 江油市| 福鼎市| 和平区| 龙门县| 文安县| 山阳县| 天镇县| 宿迁市| 留坝县| 甘谷县| 邮箱| 英超| 海晏县| 肥城市| 漳浦县| 凤阳县| 张家港市| 铜山县| 临猗县| 改则县| 正宁县| 乌兰察布市| 天津市| 贵港市| 都安| 平阳县| 平阴县| 资源县| 南和县| 垣曲县| 叶城县| 铜川市| 滕州市| 盘锦市|