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

首頁 > 語言 > PHP > 正文

php高效快速獲取圖片尺寸的方法

2024-09-04 11:44:35
字體:
來源:轉載
供稿:網友

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

方法可以用于快速獲取圖片尺寸信息,獲取JPEG格式圖片的尺寸信息,并且不需要下載讀取整個圖片,經測試這個函數不是對所有JPEG格式的圖片都有效.

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

  1. <?php 
  2. /* 
  3.  
  4. * http://www.survivalescaperooms.com 
  5.  
  6. */ 
  7.  
  8. // Retrieve JPEG width and height without downloading/reading entire image. 
  9.  
  10. function getjpegsize($img_loc) { 
  11.     $handle = fopen($img_loc"rb"or die("Invalid file stream."); 
  12.     $new_block = NULL; 
  13.     if(!feof($handle)) { 
  14.         $new_block = fread($handle, 32); 
  15.         $i = 0; 
  16.         if($new_block[$i]=="xFF" && $new_block[$i+1]=="xD8" && $new_block[$i+2]=="xFF" && $new_block[$i+3]=="xE0") { 
  17.             $i += 4; 
  18.             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") { 
  19.                  
  20. // Read block size and skip ahead to begin cycling through blocks in search of SOF marker 
  21.  
  22.                 $block_size = unpack("H*"$new_block[$i] . $new_block[$i+1]); 
  23.                 $block_size = hexdec($block_size[1]); 
  24.                 while(!feof($handle)) { 
  25.                     $i += $block_size
  26.                     $new_block .= fread($handle$block_size); 
  27.                     if($new_block[$i]=="xFF") { 
  28.                          
  29. // New block detected, check for SOF marker 
  30.  
  31.                         $sof_marker = array("xC0""xC1""xC2""xC3""xC5""xC6""xC7""xC8""xC9""xCA""xCB""xCD""xCE""xCF"); 
  32.                         if(in_array($new_block[$i+1], $sof_marker)) { 
  33.                              
  34. // SOF marker detected. Width and height information is contained in bytes 4-7 after this byte. 
  35.  
  36.                             $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]; 
  37.                             $unpacked = unpack("H*"$size_data); 
  38.                             $unpacked = $unpacked[1]; 
  39.                             $height = hexdec($unpacked[6] . $unpacked[7] . $unpacked[8] . $unpacked[9]); 
  40.                             $width = hexdec($unpacked[10] . $unpacked[11] . $unpacked[12] . $unpacked[13]); 
  41.                             return array($width$height); 
  42.                         } else { 
  43.                              
  44. // Skip block marker and read block size 
  45.  
  46.                             $i += 2; 
  47.                             $block_size = unpack("H*"$new_block[$i] . $new_block[$i+1]); 
  48.                             $block_size = hexdec($block_size[1]); 
  49.                         } 
  50.                     } else { 
  51.                         return FALSE; 
  52.                     } 
  53.                 } 
  54.             } 
  55.         } 
  56.     } 
  57.     return FALSE; 
  58. ?> 

2.實例代碼如下:

  1. $url='http://www.survivalescaperooms.com/images/201203/08/1331189004_28093400.jpg'
  2. $image_content = file_get_contents($url); 
  3. $image = imagecreatefromstring($image_content); 
  4. $width = imagesx($image); 
  5. $height = imagesy($image); 
  6. echo $width.'*'.$height."nr";

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 北川| 安仁县| 长沙县| 景东| 准格尔旗| 德安县| 安仁县| 垣曲县| 灵寿县| 察隅县| 龙南县| 晋中市| 囊谦县| 金沙县| 无棣县| 博客| 苗栗市| 汕头市| 石狮市| 卫辉市| 财经| 凤翔县| 万全县| 循化| 贵德县| 曲水县| 河北区| 射阳县| 克山县| 潼南县| 南昌市| 锡林郭勒盟| 斗六市| 扬州市| 遂昌县| 万载县| 沭阳县| 宜兴市| 涞源县| 望谟县| 乌兰浩特市|