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 什么是PEAR?(第二篇)
Mar 19 PHP
php中3des加密代码(完全与.net中的兼容)
Aug 02 PHP
解析php入库和出库
Jun 25 PHP
php强制运行广告的方法
Dec 01 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
Oct 08 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
微信第三方登录(原生)demo【必看篇】
May 26 PHP
php readfile()修改文件上传大小设置
Aug 11 PHP
浅谈关于PHP解决图片无损压缩的问题
Sep 01 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 PHP
Laravel框架实现即点即改功能的方法分析
Oct 31 PHP
php远程请求CURL实例教程(爬虫、保存登录状态)
Dec 10 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检测图片木马多进制编程实践
2013/04/11 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
为Yahoo! UI Extensions Grid增加内置的可编辑器
2007/03/10 Javascript
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
JS不能跨域借助jquery获取IP地址的方法
2014/08/20 Javascript
jquery对象访问是什么及使用方法介绍
2016/05/03 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
微信小程序中转义字符的处理方法
2019/03/28 Javascript
Nodejs核心模块之net和http的使用详解
2019/04/02 NodeJs
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
编写Python爬虫抓取暴走漫画上gif图片的实例分享
2016/04/20 Python
Python使用functools模块中的partial函数生成偏函数
2016/07/02 Python
在centos7中分布式部署pyspider
2017/05/03 Python
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
使用Python实现windows下的抓包与解析
2018/01/15 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
Python collections模块使用方法详解
2019/08/28 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
综合办公室个人的自我评价
2013/12/22 职场文书
学校消防演习方案
2014/02/19 职场文书
旺仔牛奶广告词
2014/03/20 职场文书
党的群众路线教育实践活动总结报告
2014/07/03 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
2014大学生学生会工作总结
2014/12/19 职场文书
先进集体事迹材料范文
2014/12/25 职场文书
2015年感恩父亲节活动策划方案
2015/05/05 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript