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的中问验证码
Nov 25 PHP
PHP has encountered an Access Violation
Jan 15 PHP
mysql 的 like 问题,超强毕杀记!!!
Jan 18 PHP
个人站长制做网页常用的php代码
Mar 03 PHP
通过curl模拟post和get方式提交的表单类
Apr 23 PHP
php中使用array_filter()函数过滤空数组的实现代码
Aug 19 PHP
php 参数过滤、数据过滤详解
Oct 26 PHP
PHP自定义函数格式化json数据示例
Sep 14 PHP
Thinkphp连表查询及数据导出方法示例
Oct 15 PHP
Thinkphp实现短信验证注册功能
Oct 18 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
Jun 16 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 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
乐信RP2100的电路分析和打磨
2021/03/02 无线电
php pki加密技术(openssl)详解
2013/07/01 PHP
AES加解密在php接口请求过程中的应用示例
2016/10/26 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
2017/09/30 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
JavaScript实现函数返回多个值的方法
2015/06/09 Javascript
浅析jQuery 3.0中的Data
2016/06/14 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
layui radio单选限制下一个radio单选的实例
2019/09/03 Javascript
javascript如何实现create方法
2019/11/04 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
vue浏览器返回监听的具体步骤
2021/02/03 Vue.js
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
Python格式化压缩后的JS文件的方法
2015/03/05 Python
python dict.get()和dict['key']的区别详解
2016/06/30 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
美国半成品食材配送服务商:Home Chef
2018/01/25 全球购物
大学老师推荐信
2014/02/25 职场文书
先进事迹材料怎么写
2014/12/30 职场文书
三孔导游词
2015/02/05 职场文书
2015教师年度考核评语
2015/03/25 职场文书
监理中标通知书
2015/04/16 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
浅谈如何提高PHP代码质量之端到端集成测试
2021/05/28 PHP
python运行脚本文件的三种方法实例
2022/06/25 Python