php getimagesize函数获取图片宽高

 更新时间:2016年11月25日 16:47  点击:1433
如果你想使用php获取图片的高与宽我们可以直接利用php中的getimagesize函数来操作,下面我来给大家详细介绍getimagesize函数使用方法。

getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型和一个可以用于普通 HTML 文件中 IMG 标记中的 height/width 文本字符串。

 代码如下 复制代码

<?php/* 1.jpg为你想获得其尺寸的图片 */
$arr = getimagesize("1.jpg");

/**
 * 这里$arr为一个数组类型
 * $arr[0] 为图像的宽度
 * $arr[1] 为图像的高度
 * $arr[2] 为图像的格式,包括jpg、gif和png等
 * $arr[3] 为图像的宽度和高度,内容为 width="xxx" height="yyy"
 */

/* 以下两行代码输出的内容都是一样的 */
echo "<img src="1.jpg" $arr[3] alt="" />";
echo "<img src="1.jpg" width="$arr[0]" height="$arr[1]" alt="" />";
?>

以上php代码被解释为内容为:

 代码如下 复制代码


<img src="1.jpg" width="xxx" height="yyy" alt="" />
<img src="1.jpg" width="xxx" height="yyy" alt="" />

Example #1 getimagesize(文件)

 代码如下 复制代码

<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src="img/flag.jpg" $attr>";
?>

本文章来给大家介绍PHP常用字符串正则替换及剖分函数比较,在php字符串正则替换大概有:str_replace、str_ireplace、substr_replace、preg_replace、preg_match、preg_match_all、preg_quote、preg_split、ereg_replace、eregi_replace、preg_replace、str_split函数,下面我来给大家介绍。

正则函数关系暧昧所以都放到一起比较一下,方便参考。

名称 支持正则 特点 备注
str_replace X 字符串替换函数,大小写敏感  
str_ireplace X 字符串替换函数,大小写不敏感,支持数组式批量替换 感谢网友franci,提醒添加
substr_replace X 部分替换字符串函数,可以指定位置index  
       
preg_replace Y 指定匹配模式进行替换,支持子串引用  优先使用
ereg_replace Y 指定匹配模式进行替换,大小写敏感,支持子串引用  
eregi_replace Y 指定匹配模式进行替换,大小写不敏感,支持子串引用  
       
ereg Y 指定模式全文匹配,可以用来匹配判断,或返回匹配数组  
preg_match Y 指定模式匹配一次退出,可以用来是否匹配判断,或使用返回的匹配数组  优先使用
preg_match_all Y 指定模式全文匹配,一般用来使用返回的匹配数组  优先使用
       
preg_split Y 指定匹配模式下正则剖分,如果能用最好还是使用explode或str_split  
str_split X 指定长度剖分字符串,默认单个字符剖分成数组  
explode X 可以指定单个或多个字符剖分字符串,成功则返回数组,例如12345按照34剖分则返回12和5  
       
 preg_quote  -  转义正则表达式字符,意思就是为特殊字符加上反斜线,正则表达式的特殊字符包括:. + * ? [ ^ ] $ ( ) { } = ! < > | : -  
       

补充说明:

1、在PHP中有两套正则表达式函数库,功能非常相似:

一套是POSIX(Portable Operating System Interface of Unix )库提供的,函数以ereg_前缀命名,POSIX正则函数库目前已经不再推荐使用

一套是PCRE(Perl Compatible Regular Expression)库提供的,函数以preg_前缀命名,推荐大家优先使用。在PCRE中,通常将模式表达式(即正则表达式)包含在两个反斜线“/”之间,如“/^w+$/”样式。

2、PHP正则表达式作用:匹配提取、匹配替换。

在php中提供了大量的对文件操作的函数,下面我来给大家总结php 文件函数对文件读入,写入操作,有需了解的这些函数的朋友可进入参考。

一、操作文件,获取文件信息

 代码如下 复制代码


<?php

    //打开文件
    $file_path="text.txt";
    if($fp=fopen($file_path,"r")){
        //取出文件的信息
        $file_info=fstat($fp);
        echo "<pre>";
        print_r($file_info);
        echo "</pre>";

        //单个的取出
        $file_size=$file_info['size'];
        //文件大小按字节来计算的
        echo "文件的大小为:".$file_size;
        echo  "<br/>文件上次访问的时间:".date("Y-m-d H:i:s",$file_info['atime']);  //atime表示【该文件上次被访问的时间】
        echo  "<br/>文件上次修改的时间:".date("Y-m-d H:i:s",$file_info['mtime']);  //mtime表示【该文件上次内容被修改的时间】
        echo  "<br/>文件上次change的时间:".date("Y-m-d H:i:s",$file_info['ctime']); //ctime表示【该文件上次 文件所有者/文件组 修改的时间】

    }else{
        echo "打开文件失败";
    }
   
    //关闭文件,这个非常重要
    fclose($fp);
?>

2、第二种获取文件信息方式

 代码如下 复制代码


<?php

    //第二种获取文件信息
    $file_path="text.txt";
    if(!file_exists($file_path)){
        echo "文件不存在";
        exit();
    }

    echo "<br>".date("Y-m-d H:i:s",fileatime($file_path));
    echo "<br>".date("Y-m-d H:i:s",filemtime($file_path));
    echo "<br>".date("Y-m-d H:i:s",filectime($file_path));

    //echo "<br>".filemtime($file_path);
    //echo "<br>".filectime($file_path);
?>

二、读取文件操作

 代码如下 复制代码

<?php

    //读取文件
    $file_path="text.txt";

    if(!file_exists($file_path)){
        echo "文件不存在";
        exit();
    }
   
    //打开文件
    $fp=fopen($file_path,"a+");
    //读取文件
    $content=fread($fp,filesize($file_path));
    echo "文件内容是:<br/>";
    //默认情况下把内容输出到网页后,不会换行显示,因为网页不识别rn
    //所有要把rn =><br/>
   
    $content=str_replace("rn","<br/>",$content);
    echo  $content;

    fclose($fp);
?>


 

2、第二种读取文件的方式

 代码如下 复制代码


<?php


    //第二种读取文件的方式

    $file_path="text.txt";
    if(!file_exists($file_path)){
        echo "文件不存在";
        exit();
    }
    $content=file_get_contents($file_path);

    $content=str_replace("rn","<br/>",$content);
    echo  $content;
?>


 

3、第三种读取方法,循环读取(对付大文件)

 代码如下 复制代码


<?php


    //第三种读取方法,循环读取(对付大文件)

    $file_path="text.txt";
    if(!file_exists($file_path)){
        echo "文件不存在";
        exit();
    }

    //打开文件
    $fp=fopen($file_path,"a+");
    //定义每次读取的多少字节
    $buffer=1024;
    //一边读取。一边判断是否达到文件末尾
    while(!feof($fp)){
        //按1024个字节读取数据
        $content=fread($fp,$buffer);
        echo $content;
    }

    fclose($fp);
?>


 

4、文件读取实际应用:当我们连接数据库的时候,可以把指定的数据配置到一个文件中,然后再PHP运行时,实时获取信息

 代码如下 复制代码

db.ini 文件

host=127.0.0.1
user=root
pwd=root
db=test


获取文件

 代码如下 复制代码


<?php

    $arr=parse_ini_file("db.ini");
    echo "<pre>";
    print_r($arr);
    echo "</pre>";
   
    echo $arr['host'];

    //连接数据库
    $conn = mysql_connect($arr['host'], $arr['user'], $arr['pwd']);

    if(!$conn){
        echo "error";
    }

    echo "OK";
?>

三、写文件

 代码如下 复制代码

<?php

    //写文件
    $file_path="text.txt";
    if(!file_exists($file_path)){
        echo "文件不存在";
        exit();
    }
    //"a+" 在文件后面追加  "w+"重新写入

    $fp=fopen($file_path,"w+");
    $con="rn你好";
    for($i=0;$i<10;$i++){
    fwrite($fp,$con);}

    echo "添加成功";
    fclose($fp);

   
?>

2、第二中方式  通过file_put_contents函数

 代码如下 复制代码


<?php


    //第二种方式写文件
    $file_path="text.txt";
    $content="hello,worldrn";

    //将一个字符串写入文件  默认是【FILE_USE_INCLUDE_PATH 】"w+"重新写入
    file_put_contents($file_path,$content,FILE_APPEND);

    echo "OK";
?>

在php中判断是否为数组很简单,php中利用is_array() 函数就可以快速判断变量是否为数组了,下面我来给大家介绍。

is_array — 检测变量是否是数组

Report a bug 描述
bool is_array ( mixed $var )

如果 var 是 array,则返回 TRUE,否则返回 FALSE。

 代码如下 复制代码

$a =1;

if( is_array( $a ) )
{
  echo '是数组';
}
else
{
   echo '不是数组0';
}

 代码如下 复制代码

<?php
function is_vector( &$array ) {
   if ( !is_array($array) || empty($array) ) {
      return -1;
   }
   $next = 0;
   foreach ( $array as $k => $v ) {
      if ( $k !== $next ) return false;
      $next++;
   }
   return true;
}
?>

判断是否索引数组的方法

echo is_assoc($array)?'索引数组':'不是索引数组';

 代码如下 复制代码

function is_assoc($array) {
        if(is_array($array)) {
            $keys = array_keys($array);
            return $keys != array_keys($keys);
        }
        return false;
}

昨天我有一个功能是需要判断生成的多个数组交集,也就是要判断这些数组中是否存在交集了,下面我来给各位同学介绍php数组交集判断程序代码实例,有需要的朋友可参考。

需要判断两个数组是否有交集,第一个感觉PHP中应该有这个函数,果然:

array array_intersect(array array1,array array2[,arrayN…])

返回N个数组中的交集元素,如果是关联数组可以用array_intersect_assoc()

PHP案例如下:

数组的交集 array_intersect()
array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。其形式如下:

 代码如下 复制代码


<?php
$fruit1 = array("Apple","Banana","Orange");
$fruit2 = array("Pear","Apple","Grape");
$fruit3 = array("Watermelon","Orange","Apple");
$intersection = array_intersect($fruit1, $fruit2, $fruit3);
print_r($intersection);
// 输出 Array ( [0] => Apple )
?>

我的应用如下:

 代码如下 复制代码

if($user->role != 1){
            $count = count($projects);
            for($i=0;$i<$count;$i++){
                if(!array_intersect(explode(',', $projects[$i]['role']),  explode(',', $projects[$i]['next_approve_role']))){
                    unset($projects[$i]);
                    continue;
                }
            }
 }

关联数组的交集 array_intersect_assoc()

 代码如下 复制代码

<?php
$fruit1 = array("red"=>"Apple","yellow"=>"Banana","orange"=>"Orange");
$fruit2 = array("yellow"=>"Pear","red"=>"Apple","purple"=>"Grape");
$fruit3 = array("green"=>"Watermelon","orange"=>"Orange","red"=>"Apple");
$intersection = array_intersect_assoc($fruit1, $fruit2, $fruit3);
print_r($intersection);

// output
// Array ( [red] => Apple )
?>

数组交集的优化

假定每个参数会包含一千个左右的产品ID(int),以此为前提来模拟生成一些数据:

 代码如下 复制代码

<?php

$rand = function() {
    $result = array();

    for ($i = 0; $i < 1000; $i++) {
        $result[] = mt_rand(1, 10000);
    }

    return $result;
};

$param_a = $rand();
$param_b = $rand();

?>

注意:如果测试数据集过小的话,结论可能会出现不一致。

先看看通过PHP内置方法array_intersect实现的性能:

 代码如下 复制代码

<?php

$time = microtime(true);

$result = array_intersect($param_a, $param_b);

$time = microtime(true) - $time;

echo "array_intersect: {$time}n";

?>

在优化之前,我们先来看看array_intersect一些特殊的地方:

 代码如下 复制代码

<?php

$param_a = array(1, 2, 2);
$param_b = array(1, 2, 3);

var_dump(
    array_intersect($param_a, $param_b),
    array_intersect($param_b, $param_a)
);

?>

array_intersect($param_a, $param_b): 1, 2, 2
array_intersect($param_b, $param_a): 1, 2
也就是说,如果在第一个数组参数中有重复元素的话,则array_intersect会返回所有满足条件的重复元素。改写array_intersect的时候最好兼容这些功能。

下面看看通过自定义方法int_array_intersect实现的性能:

 代码如下 复制代码

<?php

function int_array_intersect()
{
    if (func_num_args() < 2) {
        trigger_error('param error', E_USER_ERROR);
    }

    $args = func_get_args();

    foreach ($args AS $arg) {
        if (!is_array($arg)) {
            trigger_error('param error', E_USER_ERROR);
        }
    }

    $intersect = function($a, $b) {
        $result = array();

        $length_a = count($a);
        $length_b = count($b);

        for ($i = 0, $j = 0; $i < $length_a && $j < $length_b; null) {
            if($a[$i] < $b[$j] && ++$i) {
                continue;
            }

            if($a[$i] > $b[$j] && ++$j) {
                continue;
            }

            $result[] = $a[$i];

            if (isset($a[$next = $i + 1]) && $a[$next] != $a[$i]) {
                ++$j;
            }
            ++$i;
        }

        return $result;
    };

    $result = array_shift($args);
    sort($result);

    foreach ($args as $arg) {
        sort($arg);
        $result = $intersect($result, $arg);
    }

    return $result;
}

$time = microtime(true);

$result = int_array_intersect($param_a, $param_b);

$time = microtime(true) - $time;

echo "int_array_intersect: {$time}n";

?>

直觉上,我们肯定会认为内置函数快于自定义函数,但本例中结果恰恰相反:

array_intersect: 0.023918151855469
int_array_intersect: 0.0026049613952637

[!--infotagslink--]

相关文章

  • php正确禁用eval函数与误区介绍

    eval函数在php中是一个函数并不是系统组件函数,我们在php.ini中的disable_functions是无法禁止它的,因这他不是一个php_function哦。 eval()针对php安全来说具有很...2016-11-25
  • php中eval()函数操作数组的方法

    在php中eval是一个函数并且不能直接禁用了,但eval函数又相当的危险了经常会出现一些问题了,今天我们就一起来看看eval函数对数组的操作 例子, <?php $data="array...2016-11-25
  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19
  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • Python astype(np.float)函数使用方法解析

    这篇文章主要介绍了Python astype(np.float)函数使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-08
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Photoshop古装美女图片转为工笔画效果制作教程

    今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • php获取一个文件夹的mtime的程序

    php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮

    jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • jquery如何获取元素的滚动条高度等实现代码

    主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20