在 php 获取图片尺寸的方法我们可以使用 getimagesize 获取图片尺寸的效率是很低的,首先需要获取整个的图片信息,然后再进行操作,下面的例子更科学算法更好,我们一起来看看吧.
方法可以用于快速获取图片尺寸信息,获取JPEG格式图片的尺寸信息,并且不需要下载读取整个图片,经测试这个函数不是对所有JPEG格式的图片都有效.
1.获取JPEG格式图片的尺寸信息,代码如下:
<?php /* * http://www.phpfensi.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.实例代码如下:
$url = 'http://www.phpfensi.com/images/201203/08/1331189004_28093400.jpg' ; $image_content = file_get_contents ( $url ); $image = imagecreatefromstring( $image_content ); $width = imagesx( $image ); $height = imagesy( $image ); echo $width . '*' . $height . "nr" ;查看更多关于php高效快速获取图片尺寸的方法的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did29469