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 相关文章推荐
Win9x/ME下Apache+PHP安装配置
Oct 09 PHP
用PHP实现维护文件代码
Jun 14 PHP
PHP企业级应用之常见缓存技术篇
Jan 27 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
PHP面向对象法则
Feb 23 PHP
php中使用__autoload()自动加载未定义类的实现代码
Feb 06 PHP
PHP设计模式之责任链模式的深入解析
Jun 13 PHP
linux中cd命令使用详解
Jan 08 PHP
新浪SAE搭建PHP项目教程
Jan 28 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
php实现的农历算法实例
Aug 11 PHP
Yii1.1框架实现PHP极光推送消息通知功能
Sep 06 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使用正则表达式获取图片url的方法
2015/01/16 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
jQuery+ajax的资源回收处理机制分析
2017/01/07 Javascript
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
浅谈一种让小程序支持JSX语法的新思路
2019/06/16 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
Python函数参数分类原理详解
2020/05/28 Python
Pycharm学生免费专业版安装教程的方法步骤
2020/09/24 Python
CSS3网格的三个新特性详解
2014/04/04 HTML / CSS
Europcar意大利:汽车租赁
2019/07/07 全球购物
优质有机椰子产品:Dr. Goerg
2019/09/24 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
2019年c语言经典面试题目
2016/08/17 面试题
幼儿园教师奖惩制度
2014/02/01 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
安全生产责任书范本
2014/04/15 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
小学竞选班干部演讲稿
2014/08/20 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
酒店前台岗位职责
2015/04/16 职场文书
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python
Java 中的 Unsafe 魔法类的作用大全
2021/06/26 Java/Android