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 相关文章推荐
纯真IP数据库的应用 IP地址转化成十进制
Jun 14 PHP
PHP获取表单textarea数据中的换行问题
Sep 10 PHP
php中根据某年第几天计算出日期年月日的代码
Feb 24 PHP
PHP使用PHPMailer发送邮件的简单使用方法
Nov 12 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
php实现插入排序
Mar 29 PHP
php去掉文件前几行的方法
Jul 29 PHP
php+mysql实现无限级分类
Nov 11 PHP
php实现生成验证码实例分享
Apr 10 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
Jul 18 PHP
php 使用html5实现多文件上传实例
Oct 24 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
Ajax+PHP边学边练 之五 图片处理
2009/12/03 PHP
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
javascript时间函数基础介绍
2013/03/28 Javascript
javascript重写alert方法的实例代码
2013/03/29 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
js实现特定位取反原理及示例
2014/06/30 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
Bootstrap源码解读导航条(7)
2016/12/23 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
Python使用chardet判断字符编码
2015/05/09 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
Python从使用线程到使用async/await的深入讲解
2018/09/16 Python
Python子类继承父类构造函数详解
2019/02/19 Python
Python zip函数打包元素实例解析
2019/12/11 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
加拿大最大的五金、家居装修和园艺产品商店:RONA
2017/01/27 全球购物
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
英国排名第一的在线宠物用品商店:Monster Pet Supplies
2018/05/20 全球购物
机电一体化专业推荐信
2013/12/03 职场文书
工程开工庆典邀请函
2014/02/01 职场文书
物理研修随笔感言
2014/02/14 职场文书
房地产活动策划方案
2014/05/14 职场文书
2014年工程部工作总结
2014/11/25 职场文书
辞职信的写法
2015/02/27 职场文书
2015年高中班主任工作总结
2015/04/30 职场文书
一般纳税人申请报告
2015/05/18 职场文书
Django rest framework如何自定义用户表
2021/06/09 Python
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript