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 相关文章推荐
使用sockets:从新闻组中获取文章(一)
Oct 09 PHP
在PHP中使用灵巧的体系结构
Oct 09 PHP
PHP 可阅读随机字符串代码
May 26 PHP
解析php中获取系统信息的方法
Jun 25 PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
smarty中js的调用方法示例
Oct 27 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
php获取汉字拼音首字母的方法
Oct 21 PHP
Symfony查询方法实例小结
Jun 28 PHP
laravel高级的Join语法详解以及使用Join多个条件
Oct 16 PHP
Laravel框架数据库迁移操作实例详解
Apr 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中使用临时表查询数据的一个例子
2013/02/03 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
List all the Databases on a SQL Server
2007/06/21 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
VUE脚手架具体使用方法
2019/05/20 Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
如何基于viewport vm适配移动端页面
2020/11/13 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
[40:05]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
python中如何使用正则表达式的集合字符示例
2017/10/09 Python
python 3.6.2 安装配置方法图文教程
2018/09/18 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
Python Http请求json解析库用法解析
2020/11/28 Python
python time.strptime格式化实例详解
2021/02/03 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
新浪网技术部笔试题
2016/08/26 面试题
《少年王冕》教学反思
2014/04/11 职场文书
难忘的一课教学反思
2014/04/30 职场文书
2014党员学习《反腐倡廉警示教育读本》思想汇报
2014/09/13 职场文书
《思路决定出路》读后感3篇
2019/12/11 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
关于python爬虫应用urllib库作用分析
2021/09/04 Python
Go Grpc Gateway兼容HTTP协议文档自动生成网关
2022/06/16 Golang