php代码中获取本地图片与远程图片尺寸与大小的几种方法

编辑:管理员 发布时间:2021-11-03 16:44:481311

在使用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,通过正则提取到文件大小信息,然后过滤掉无用字符即可得到图片文件的大小.

TAGS: php 图片处理
热门文章
最新文章

热门标签

路径命令行表单字符符号nginxcookiejavapython数组文字处理小数服务器管理apache图片处理php