PHP中imagecopyresampled函数实现图片裁剪

 更新时间:2016年11月25日 16:46  点击:1847
图片裁剪是根据用户提供的坐标然后在指定图片上利用图片裁剪函数imagecopyresampled进行图片剪切了,下面来看一个例子。

代码如下所示:

 代码如下 复制代码

<?php
    //在一个大的背景图片中裁剪出指定区域的图片,以jpeg图片格式为例
    function cut($filename,$x,$y,$width,$height){
        $back = imagecreatetruecolor($width, $height);
        //创建一个可以保存裁剪后图片的资源
        $cutimg = imagecreatetruecolor($width, $height);
        //使用imagecopyresampled()函数对图片进行裁剪
        imagecopyresampled($cutimg,$back,0,0,$x,$y,$width,$height,$width,$height);
        //保存裁剪 后的图片,如果不想覆盖图片可以为裁剪后的图片加上前缀
        imagejpeg($cutimg,$filename);
        imagedestroy($cutimg);
        imagedestroy($back);
    }
 
    cut("brophp.jpg", 50, 50, 200, 200);
?>

在php中serialize()与unserialize()函数是一对函数,下面本文章就来为各位同学介绍serialize()与unserialize()函数的使用例子,希望能帮助到各位。

php函数serialize():

这个函数作用就是序列化数据,返回一个可存储的字符串,该函数有利于存储或传递PHP的值,同时不丢失其类型和结构。所以我们在cms数据库里面经常看到这样的结构。

一般,我们将复杂或者数据量多而没有必要分开存储的数据封装成一个多维数组通过serialize()转成字符串,然后存进数据库,需要的时候再拿出来转成数组再用,而拿出了转成数组用的就是php的unserialize(),前面多了一个un嘛。直接上例子:

 代码如下 复制代码

$a=array("周","满","和","个人","博客","www.111cn.net","周满和","个人博客");
$b=serialize($a);
print_r($b);
echo "<br/>";
$c=unserialize($b);
print_r($c);

输出结果是:

//经过serialize序列化之后得到的数据,也是存这个进数据库
a:8:{i:0;s:3:"周";i:1;s:3:"满";i:2;s:3:"和";i:3;s:6:"个人";i:4;s:6:"博客";i:5;s:20:"www.111cn.net";i:6;s:9:"周满和";i:7;s:12:"个人博客";}
 
//经过unserialize()反序列化得到的数据,和之前的$a数组结构一样吧
Array ( [0] => 周 [1] => 满 [2] => 和 [3] => 个人 [4] => 博客 [5] => www.111cn.net [6] => 周满和 [7] => 个人博客 )

在上一个复杂一点的二维数组的例子:

 代码如下 复制代码

$a1=array(
    'name'=>array("周","满",'和'),
    'name_weburl'=>array("周满和","www.111cn.net"),
    'all'=>array('周满和个人博客'=>'www.111cn.net')
);
$b1=serialize($a1);
print_r($b1);
echo "<br/>";
$c1=unserialize($b1); 
print_r($c1);

输出结果是:


//经过serialize序列化之后得到的数据,也是存这个进数据库
a:3:{s:4:"name";a:3:{i:0;s:3:"周";i:1;s:3:"满";i:2;s:3:"和";}s:11:"name_weburl";a:2:{i:0;s:9:"周满和";i:1;s:20:"www.111cn.net";}s:3:"all";a:1:{s:21:"周满和个人博客";s:20:"www.111cn.net";}}
 
//经过unserialize()反序列化得到的数据,和之前的$a数组结构一样吧
Array ( [name] => Array ( [0] => 周 [1] => 满 [2] => 和 ) [name_weburl] => Array ( [0] => 周满和 [1] => www.111cn.net ) [all] => Array ( [周满和个人博客] => www.111cn.net ) )

下面本文章给大家简单的介绍一下PHP数组连接和拆分函数array_combine()和array_slice()用法,希望例子能帮助到各位同学哦。

一提起数组,可能多PHP初学者会觉得难,但开发一些高级应用的时候,又离不开数组的使用。下面就来说下,PHP使用array_combine()函数来连接数组、用array_slice()函数来拆分数组。
一、连接数组
array array_combine(array keys,array values)
本函数会返回一个新数组,由一组提交的键和对应的值组成。

下面来看一个实例:

 代码如下 复制代码

<?php
$name = array("apple", "banana", "orange");
$color = array("red", "yellow", "orange");
$fruit = array_combine($name, $color);
print_r($fruit);
// 输出结果为:
// Array ( [apple] => red [banana] => yellow [orange] => orange )
?>

需要注意:使用array_combine()连接数组时,两个数组必须大小相同,不能为空。

二、拆分数组:

主要是使用array_slice()函数,它将返回数组中的一部分,从键offset开始,到offset+length位置结束。其形式:
array array_slice (array array, int offset[,int length])

下面来看一个例子:

 代码如下 复制代码

<?php
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");
$subset = array_slice($fruits, 3);
print_r($subset);
// 输出结果为:
// Array ( [0] => Pear [1] => Grape [2] => Lemon [3] => Watermelon )
?>

使用负长度:

 代码如下 复制代码
<?php
$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");
$subset = array_slice($fruits, 2, -2);
print_r($subset);
// 输出结果:
// Array ( [0] => Orange [1] => Pear [2] => Grape )
?>

需要注意的是:offset 为正值时,拆分将从距数组开头的offset 位置开始;如果offset 为负值,则拆分从距数组末尾的offset 位置开始。如果省略了可选参数length,则拆分将从offset 开始,一直到数组的最后一个元素。如果给出了length 且为正数,则会在距数组开头的offset+length 位置结束。相反,如果给出了length且为负数,则在距数组开头的count(input_array)-|length|位置结束。

imagecolorallocate()函数可以实现创建不同颜色的图片了,下面来给各位朋友介绍一下这个函数使用例子,希望能帮助到大家。

在是使用PHP动态输出美丽图像的同时,也离不开颜色的设置,就像画画时需要使用调色板一样。设置图像的颜色,需要调用imagecolorallocate()函数完成。如果在图像中需要设置多种颜色,只要多次调用该函数即可。该函数的原型如下所示:

int imagecolorallocate(resource $image,int $red,int $green,int $blue)//为一幅图分配颜色

该函数会返回一个标识符,代表了由给定的RGB成分组成的颜色。参数$red、$green和$blue分别是所需要的颜色的红、绿蓝成分。这些参数是0到255的整数或者十六进制的0×00到0xFF。第1个参数$image是画布图像的句柄,该函数必须调用$image所代表的图像中的颜色。但要注意,如果是使用imagecreate()函数建立的画布,则第一次对imagecolorallocate()函数的调用,会给基于调色板的图像填充背景色。该函数的使用代码如下所示:

 代码如下 复制代码

<?php
$im = imagecreate(100,100);//为设置颜色函数提供一个画布资源
//背景设为红色
$background = imagecolorallocate($m,255,0,0);//第一次调用即为画布设置背景颜色
//设定一些颜色
$white = imagecolorallocate($im,255,255,255);//返回由十进制整数设置为白色的标识符
$black = imagecolorallocate($im,0,0,0);//返回由十进制参数设置为黑色的标识符
//十六进制方式
$white = imagecolorallocate($im,0xFF,0xFF,0xFF);//返回由十六进制整数设置为白色的标识符
$black = imagecolorallocate($im,0x00,0x00,0x00);//返回由十六进制整数设置为黑色的标识符
?>

strtr()和str_replace()函数都可用于在php中实现字符串替换了,但在性能比较中strtr()和str_replace()是有区别的,我测试过几个例子发现strstr函数要慢于str_replace函数哦,下面我来具体的给各位分享这些函数吧。

strtr(string,from,to):

逐个字符开始替换,以from跟to中长度较较短的一个为准,例如:
strtr("aidenliu","ai","b") 只替换原始字符串中出现的a 输出:bidenliu
strtr("aidenliu","a","bc") 只替换原始字符串中出现的a 输出:bidenliu
此函数是大小写敏感的,具如果发生多次替换,每一次替换的蓝本都是最原始的那个字符串,而不是在前一次替换的基础上替换,如

 代码如下 复制代码
strtr("aidenliu","aA","A@") 会输出Aidenliu 而不是@idenliu
strtr(string,array):

array 为关联数组,用关联数组中的值替换原始字符串中出现的对应的键,如果发生多次替换,每次替换的对像都是最原始的那个字符串,而不是在一次替换的基础上替换(此点与str_replace不同)

 代码如下 复制代码
strtr(string,from,to)与 strtr(string,array):
strtr(string,from,to)是逐个字符替换,而strtr(string,array)是字符串替换
strtr("aidenliu","ai","") 不发生替换(第二个参数为零长度字符串)
strtr("aidenliu",array("ai"=>"")) 发生替换

参考如下文章:
php中替换函数主要有strtr(),str_repalce()这两个函数,但你们都知道他们这两个函数的区别和用法吗?
先来看看这个php字符串替换函数 strtr()的两种用法:
strtr(string,from,to)
或者strtr(string,array)
首先针对strtr函数第一种方式:
我们看看下面的举例:
 
得到的结果是:
I lOve yOu
这个结果提醒我们:
1.strtr它是区分大小写的
2.strtr的替换是很特殊的,你注意看后面那个yOu,中间的O被替换的,这显然不是我们的本意。
再举一个特殊例子,说明这个php的sttr函数的怪异
 
结果是:
I Love you
什么也不会改变,所以strtr需要注意的是:
3.不能被替换为空,也就是末位那个参数不能是空字符串,当然空格是可以的。
再次举例strtr函数的另一种情况:
 
结果是:
I lOvEs yOu
注意看第三个参数的A,在结果中并没有出现。
4.我不建议用strtr以少换多。
ok,既然这个strtr函数挺麻烦为什么还要用呢?
原因是,它的速度很快。据说,strtr 比 str_replace 快四倍。
5.能用strtr函数的时候一定要用。
那怎么用才舒服?
这就是它的第二种情况:
strtr(string,array)
6.strtr符合意愿的使用方法
 
结果为:
I Love her sister
7.小技巧:你想到替换什么你就往数组加什么
比如:
 
结果是:
I hate her sister
再次提醒那个Love 写成love 是行不通的哦。
字符串取代。
语法: string str_replace(string needle, string str, string haystack);
返回值: 字符串
函数种类: 资料处理
内容说明
本函数将字符串 str 代入 haystack 字符串中,将所有的 needle 置换成 str。mlevine@adtraq.com (11-Apr-1999) 指出在 PHP 3.0.7 版,本函数有些 bug,而 nadeem@bleh.org (05-Jun-1999) 补充在 PHP 3.0.8 版本函数就回复正常了。
使用范例
下例将 %body% 以 black 取代
 
格式:
[@str_replace("要替换的旧内容", "要取代原内容的新字符", $被替换内容的变量名)]
[@str_replace(array('旧1','旧2','旧3'), array('新1','新2','新3'), $被替换内容的变量名)]
[@str_replace(array('旧1','旧2','旧3'), '新内容', $被替换内容的变量名)]
实例:
多对一替换:想把内容字段里所有的
标签清除掉,替换成空 [@str_replace(array('
','
'), '', $Content)]
一对一替换:想把内容字段里所有的
标签换成
[@str_replace('
', '
', $Content)]
多对多替换:想把内容字段里的
换成
, 同时

,把
全清除 [@str_replace(array('
', '
','
'), array('
','
',''), $Content)]


strtr和str_replace比较


首先这2个函数都是具有替换字符功能的。但是strtr比str_replace性能上要块4倍。具体情况请看如下分解:
首先是strtr函数:
实例1:当

 代码如下 复制代码
 
<?php
//这个时候输出的为baicai而不是bai123cai,因为str("pao")<strlen("bai123")
echo strtr("paocai!","pao","bai123");
?>

实例2:当被替换的值长度小于被替换目标的时候

 代码如下 复制代码
 
<?php
//这个时候输出的为laocai而不是lacai,因为str("pao")>strlen("la")  echo strtr("paocai!","pao","la");   ?>

实例3:支持数组替换

 

 代码如下 复制代码
<?php
$Arr=array('ao'=>'oa','ai'=>'ia');
echo strtr("paocai!",$Arr); //这个时候输出的为poacia
?>

其次是str_replace:

 

 代码如下 复制代码
<?php
echo str_replace("you","paocai","I love you!"); //会输出I love paocai!
?>

总结:strtr他是跟字符长度有联系 的,但是str_replace就没有联系 ,估计在运行步骤的时候会读取字符串长度所以才会比strtr慢很多。

[!--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
  • Python astype(np.float)函数使用方法解析

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

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • Python中的imread()函数用法说明

    这篇文章主要介绍了Python中的imread()函数用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-16
  • Photoshop古装美女图片转为工笔画效果制作教程

    今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • C# 中如何取绝对值函数

    本文主要介绍了C# 中取绝对值的函数。具有很好的参考价值。下面跟着小编一起来看下吧...2020-06-25
  • jQuery+jRange实现滑动选取数值范围特效

    有时我们在页面上需要选择数值范围,如购物时选取价格区间,购买主机时自主选取CPU,内存大小配置等,使用直观的滑块条直接选取想要的数值大小即可,无需手动输入数值,操作简单又方便。HTML首先载入jQuery库文件以及jRange相关...2015-03-15
  • C#学习笔记- 随机函数Random()的用法详解

    下面小编就为大家带来一篇C#学习笔记- 随机函数Random()的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮

    jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13
  • JS实现的简洁纵向滑动菜单(滑动门)效果

    本文实例讲述了JS实现的简洁纵向滑动菜单(滑动门)效果。分享给大家供大家参考,具体如下:这是一款纵向布局的CSS+JavaScript滑动门代码,相当简洁的手法来实现,如果对颜色不满意,你可以试着自己修改CSS代码,这个滑动门将每一...2015-10-21
  • 金额阿拉伯数字转换为中文的自定义函数

    CREATE FUNCTION ChangeBigSmall (@ChangeMoney money) RETURNS VarChar(100) AS BEGIN Declare @String1 char(20) Declare @String2 char...2016-11-25
  • Android开发中findViewById()函数用法与简化

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

    这篇文章主要介绍了C++中Sort函数详细解析,sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变...2022-08-18
  • PHP用strstr()函数阻止垃圾评论(通过判断a标记)

    strstr() 函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回 false。语法:strstr(string,search)参数string,必需。规定被搜索的字符串。 参数sea...2013-10-04
  • 利用JS实现点击按钮后图片自动切换的简单方法

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