php getimagesize 上传图片的长度和宽度检测代码


Posted in PHP onMay 15, 2010

getimagesize — 取得图像大小
说明
array getimagesize ( string $filename [, array &$imageinfo ] )
getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通 HTML 文件中 <IMG> 标记中的 height/width 文本字符串。
如果不能访问 filename 指定的图像或者其不是有效的图像,getimagesize() 将返回 FALSE 并产生一条 E_WARNING 级的错误。
Note: 对 JPC,JP2,JPX,JB2,XBM 和 WBMP 的支持自 PHP 4.3.2 起可用。对 SWC 的支持自 PHP 4.3.0 起可用。对 TIFF 的支持是 PHP 4.2.0 添加的。
Note: JPEG 2000 支持是 PHP 4.3.2 添加的。注意 JPC 和 JP2 可以有不同的色彩深度的成分。此情况下,“bits”的值是碰到的最高的位深度。此外,JP2 文件可能包含有多个 JPEG 2000 代码流,此情况下,getimagesize() 返回此文件顶层中碰到的第一个代码流的值。
Note: 本函数不需要 GD 图像库。
返回一个具有四个单元的数组。索引 0 包含图像宽度的像素值,索引 1 包含图像高度的像素值。索引 2 是图像类型的标记:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。这些标记与 PHP 4.3.0 新加的 IMAGETYPE 常量对应。索引 3 是文本字符串,内容为“height="yyy" width="xxx"”,可直接用于 IMG 标记。
Example #1 getimagesize(文件)

<?php 
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg"); 
echo "<img src=\"img/flag.jpg\" $attr>"; 
?>

URL 支持是 PHP 4.0.5 添加的。
Example #2 getimagesize(URL)
<?php 
$size = getimagesize("https://3water.com/images/logo.gif"); 
// if the file name has space in it, encode it properly 
$size = getimagesize("http://www.example.com/gifs/lo go.gif"); 
?>

对于 JPG 图像,还会多返回两个索引:channels 和 bits。channels 对于 RGB 图像其值为 3,对于 CMYK 图像其值为 4。bits 是每种颜色的位数。
自 PHP 4.3.0 起,bits 和 channels 对于其它图像类型也存在。但是这些值可能会把人搞糊涂。例如,GIF 总是对每个像素使用 3 个 channel,但是对于动画 GIF 来说每个像素的位数无法通过全局颜色表计算出来。
某些格式可能不包含图像或者包含多个图像。此种情况下,getimagesize() 可能不能用来准确测定图像的大小。此时 getimagesize() 将返回零作为宽度和高度。
自 PHP 4.3.0 起,getimagesize() 还会返回额外的参数 mime,符合该图像的 MIME 类型。此信息可以用来在 HTTP Content-type 头信息中发送正确的信息:
Example #3 getimagesize() 和 MIME 类型
<?php 
$size = getimagesize($filename); 
$fp=fopen($filename, "rb"); 
if ($size && $fp) { 
header("Content-type: {$size['mime']}"); 
fpassthru($fp); 
exit; 
} else { 
// error 
} 
?>

可选的 imageinfo 参数允许从图像文件中提取一些扩展信息。目前,这将以一个关联数组返回不同的 JPG APP 标识。某些程序用这些 APP 标识来在图像中嵌入文本信息。一个非常常见的是 APP13 标识中嵌入的 IPTC » http://www.iptc.org/ 信息。可以用 iptcparse() 函数来将二进制的 APP13 标识解析为可读的信息。
Example #4 getimagesize() 返回 IPTC
<?php 
$size = getimagesize("testimg.jpg", &$info); 
if (isset($info["APP13"])) { 
$iptc = iptcparse($info["APP13"]); 
var_dump($iptc); 
} 
?>

php 有个图片GD库getimagesize()函数。
有个函数是获取图片的基本信息。
getimagesize()
$img=getimagesize('图片源');
宽度为=$img[0];
高度为=$img[1];
格式为=$img[2];
如果你要简单的话可以更简单如

$picpath = 'https://3water.com/images/logo.gif'; 
$array = getimagesize($picpath); 
print_r( $array ); 
echo '图片宽度为'.$array[0]; 
echo '图片高度为'.$array[1]; 
echo '图片格式为'.$array[2];

//再一个利用getimagesize显示缩略图的代码
function show_thumbnail($file) 
{ 
$max = 200 // Max. thumbnail width and height 
$size = getimagesize($file); 
if ( $size[0] <= $max && $size[1] <= $max ) 
{ 
$ret = '<img src="'.$file.'" '.$size[3].' border="0">'; 
} 
else 
{ 
$k = ( $size[0] >= $size[1] ) ? $size[0] / $max : $size[1] / $max; 
$ret = '<a href="javascript教程:;" onClick="window.open('image.php?img='; 
$ret .= $file.'','','width='.$size[0]; 
$ret .= ',height='.$size[1].'')">'; 
$ret .= '<img src="'.$file.'" width="'.floor($size[0]/$k).'" height="'.floor($size[1]/$k).'" border="0" alt="View full-size image"></a>'; 
} 
return $ret; 
}
PHP 相关文章推荐
PHP 5.3新特性命名空间规则解析及高级功能
Mar 11 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
php中突破基于HTTP_REFERER的防盗链措施(stream_context_create)
Mar 29 PHP
PHP代码优化之成员变量获取速度对比
Feb 28 PHP
ThinkPHP实现事务回滚示例代码
Jun 23 PHP
PHP实现获取客户端IP并获取IP信息
Mar 17 PHP
php实现通用的从数据库表读取数据到数组的函数实例
Mar 21 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
ThinkPHP中session函数详解
Sep 14 PHP
laravel自定义分页效果
Jul 23 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
thinkphp5使html5实现动态跳转的例子
Oct 16 PHP
PHP 获取客户端真实IP地址多种方法小结
May 15 #PHP
PHP生成UTF8文件的方法
May 15 #PHP
PHP 魔术函数使用说明
May 14 #PHP
PHP 事务处理数据实现代码
May 13 #PHP
php 常用类汇总 推荐收藏
May 13 #PHP
php echo 输出字符串函数详解
May 13 #PHP
php 图片加水印与上传图片加水印php类
May 12 #PHP
You might like
PHP常用代码
2006/11/23 PHP
生成ubuntu自动切换壁纸xml文件的php代码
2010/07/17 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
js使用数组判断提交数据是否存在相同数据
2013/11/27 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
JQuery中DOM加载与事件执行实例分析
2015/06/13 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
Js经典案例的实例代码
2018/05/10 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
python中使用%与.format格式化文本方法解析
2017/12/27 Python
Python any()函数的使用方法
2019/10/28 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
Python tkinter实现日期选择器
2021/02/22 Python
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
ProBikeKit英国:在线公路自行车之家
2017/02/10 全球购物
最新远光软件笔试题面试题内容
2013/11/08 面试题
药学专业个人的自我评价
2013/12/31 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
yy婚礼司仪主持词
2014/03/14 职场文书
培训协议书范本
2014/04/22 职场文书
五五普法心得体会
2014/09/04 职场文书
运动会稿件100字
2014/09/24 职场文书
横空出世观后感
2015/06/09 职场文书
三八妇女节致辞
2015/07/31 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL