在使用php代码对图片进行操作时,一般都需要先获取图片的长度与高度等参数,那么常用的查看图片尺寸大小都有哪些方法呢
1、在php代码中,有自带的获取图片大小的函数getimagesize,这个函数它是一个比较简单的函数
getimagesize函数能够回任何jpg、jpeg、gif、swf、swc、psd、bmp、tiff、iff、jpc、jpx、jp2、xbm、wbmp等图像文件的大小尺寸以及文件类型、可以用于img标签的 height="" width=""的字符。
代码如下:
<?php
$picarr = getimagesize("图片.jpg");
?>
输出数组:Array([0] => 500,[1] => 300,[2] => 2,[3] => width="500" height="300",[bits] => 8,[channels] => 3,[mime] => image/jpeg)
得到的结果是一个数组:$picarr[0]为取得的图片宽度、$arr[1]为图片高度、$arr[2]为图片格式:1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP、$arr[3]为宽度和高度的字符串:width="" height=""
$picarr['bits']是图片每种颜色的位数与二进制格式、$picarr['channels']为图片通道值通道值、$picarr['mime']是图片的MIME信息
当getimagesize函数成功获取图像信息会自动返回一个数组,失败返回FALSE,且产生一条错误信息.它可以获取本地以及远程的图像的基本信息,但在获取远程图片信息时需要先用curl之类的函数获取远程图片是否存在,否则会让程序变慢.
2、imagesx()函数与imagesy()函数
在使用imagesx、imagesy之前需要先使用imagecreatefromjpeg、imagecreatefrompng、imagecreatefromgif之类的函数返回图像的资源.
<?php
$pictupian = imagecreatefromjpeg("图片.jpg");
echo "图片的宽度:".imagesx( $pictupian );
echo "图片的高度:".imagesy( $pictupian );
?>
返回结果可以直接输出图像的宽度与高度.
3、以上都是获取的图片尺寸,那么图片大小又该怎样获得呢?
获取图片体积大小的方式有很多,这里简单介绍一些常用的.
filesize()函数
$filename="图片.jpg";
echo "文件大小为".filesize($filename) /1000;
get_headers函数,相对于filesize它可以获取远程图片文件的大小
$tuhead = get_headers("图片.jpg",true);
echo "图片大小".$tuhead['Content-Length'];
使用fread方式或者使用socket二进制方式读取
$wenjian = fopen("图片地址", 'rb');
$tumdata = stream_get_meta_data($wenjian);
//apache 则直接在 wrapper_data ,nginx的在headers
$tuinfo = isset($tumdata['wrapper_data']['headers']) ? $tumdata['wrapper_data']['headers'] : $tumdata['wrapper_data'];
foreach ($tuinfo as $ddd) {
if (preg_match('/length/iU', $ddd)) {
$huoqusize = explode(':', $ddd);
echo trim(array_pop($huoqusize));
break;
}
}
fclose($wenjian); //关闭文件
首先fopen打开指定地址的图片获取文件数据流信息,stream_get_meta_data获取head信息.nginx的信息在headers 里apache在wrapper_data,所以判断后的到$tuinfo,通过正则提取到文件大小信息,然后过滤掉无用字符即可得到图片文件的大小.