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数组操作
Dec 30 PHP
php页面缓存ob系列函数介绍
Oct 18 PHP
深入理解require与require_once与include以及include_once的区别
Jun 05 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
php curl 上传文件代码实例
Apr 27 PHP
PHP中Array相关函数简介
Jul 03 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 PHP
PHP快速推送微信模板消息
Apr 14 PHP
分析php://output和php://stdout的区别
May 06 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 PHP
java解析json方法总结
May 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
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
PHP中文编码小技巧
2014/12/25 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
JQuery制作的放大效果的popup对话框(未添加任何jquery plugin)分享
2013/04/28 Javascript
javascript(js)的小数点乘法除法问题详解
2014/03/07 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
Java编程迭代地删除文件夹及其下的所有文件实例
2018/02/10 Python
Python 互换字典的键值对实例
2019/02/12 Python
python plotly绘制直方图实例详解
2019/07/22 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
python实现三壶谜题的示例详解
2020/11/02 Python
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
介绍一下EJB的体系结构
2012/08/01 面试题
医药营销专业个人自荐信
2013/09/29 职场文书
安踏广告词改编版
2014/03/21 职场文书
暑期教师培训方案
2014/06/07 职场文书
群众路线教育实践活动自我剖析思想汇报
2014/10/04 职场文书
2014年辅导员工作总结
2014/11/18 职场文书
2016年第二十五次全国助残日活动总结
2016/04/01 职场文书
入党申请书怎么写?
2019/06/21 职场文书
深入理解python多线程编程
2021/04/18 Python
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android
解决Laravel使用验证时跳转到首页的问题
2021/11/17 PHP
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android