PHP图片处理之图片旋转和图片翻转实例


Posted in PHP onNovember 19, 2014

图片的旋转和翻转也是Web项目中比较常见的功能,但这是两个不同的概念,图片的旋转是按特定的角度来转动图片,而图片的翻转则是将图片的内容按特定的方向对调。图片翻转需要自己编写函数来实现,而旋转图片则可以直接借助GD库中提供的imagerotate()函数完成。该函数的原型如下所示:

resource  imagerotate(resource src_im ,    float angle,    int bgd_color    [,int ignore_transpatrent])

该函数可以将src_im图像用给定的angle角度旋转,bgd_color指定了旋转后没有覆盖到的部分的颜色。旋转的中心是图像的中心,旋转后的图像会按比例缩小以适合目标图像的大小(边缘不会被剪去)。如果ignore_transpatrent被设为非零值,则透明色会被忽略(否则会被保留)。下面以JPEG格式的图片为例,声明一个可以旋转图片的函数rotate(),代码如下所示:

<?php

    //用给定角度旋转图像,以jpeg图像格式为例

    function rotate($filename,$degrees){

        //创建图像资源,以jpeg格式为例

        $source = imagecreatefromjpeg($filename);

        //使用imagerotate()函数按指定的角度旋转

        $rotate = imagerotate($source, $degrees, 0);

        //旋转后的图片保存

        $imagejpeg($rotate,$filename);

    }

 

    //把一幅图像brophp.jpg旋转180度

    rotate("brophp", 180);

?>

图片翻转并不能随意指定角度,只能设置两个方向:沿Y轴水平翻转或沿X轴垂直翻转。如果是沿Y轴翻转,就是将原图从右向左(或从做向右)按一个像素宽度,以图片自身高度循环复制到新资源中,保存的新资源就是沿Y轴翻转后的图片。以JPEG格式图片为例,声明一个可以沿Y轴翻转的图片函数turn_y()代码如下所示:

<?php

    function trun_y($filename){

        $back = imagecreatefromjpeg($filename);

 

        $width = imagesx($back); 

        $height = imagesy($back);

 

        //创建一个新的图片资源,用来保存沿Y轴翻转后的图片

        $new = imagecreatetruecolor($width, $height);

        //沿y轴翻转就是将原图从右向左按一个像素宽度向新资源中逐个复制

        for($x=0 ;$x<$width; $x++){

            //逐条复制图片本身高度,1个像素宽度的图片到薪资源中

            imagecopy($new, $back, $width-$x-1, 0, $x, 0, 1, $height);

        }

 

        //保存翻转后的图片

        imagejpeg($new,$filename);

        imagedestroy($back);

        imagedestroy($new);

    }

 

    trun_y("brophp.jpg")

?>

本例声明的turn_y()函数只需要一个参数,就是要处理的图片URL。本例调用turn_y()函数将图片沿Y轴进行翻转。如果是沿X轴翻转,就是将原图从上向下(或从下向上)旋转,代码如下所示:

<?php

    function trun_x($filename){

        $back = imagecreatefromjpeg($filename);

 

        $width = imagesx($back); 

        $height = imagesy($back);

 

        //创建一个新的图片资源,用来保存沿Y轴翻转后的图片

        $new = imagecreatetruecolor($width, $height);

        //沿y轴翻转就是将原图从右向左按一个像素宽度向新资源中逐个复制

        for($y=0 ;$y<$height; $y++){

            //逐条复制图片本身高度,1个像素宽度的图片到薪资源中

            imagecopy($new, $back,0, $height-$y-1, 0, $y, $width,1);

        }

 

        //保存翻转后的图片

        imagejpeg($new,$filename);

        imagedestroy($back);

        imagedestroy($new);

    }

 

    trun_x("brophp.jpg")

?>
PHP 相关文章推荐
微信支付开发教程(一)微信支付URL配置
May 28 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
discuz图片顺序混乱解决方案
Jul 29 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
php处理带有中文URL的方法
Jul 11 PHP
简单谈谈 php 文件锁
Feb 19 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
基于递归实现的php树形菜单代码
Nov 19 #PHP
php常用的url处理函数总结
Nov 19 #PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 #PHP
PHP中常用的字符串格式化函数总结
Nov 19 #PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 #PHP
PHP 读取和编写 XML
Nov 19 #PHP
PHP生成不重复随机数的方法汇总
Nov 19 #PHP
You might like
极典R601SW收音机
2021/03/02 无线电
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
dedecms中使用php语句指南
2014/11/13 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
php图片添加水印例子
2016/07/20 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
javascript事件模型代码
2007/07/01 Javascript
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
jQuery实现单行文字间歇向上滚动源代码
2013/06/02 Javascript
js 点击页面其他地方关闭弹出层(示例代码)
2013/12/24 Javascript
jquery操作cookie插件分享
2014/01/14 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
js面向对象的写法
2016/02/19 Javascript
JS中with的替代方法与String中的正则方法详解
2016/12/23 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
Python闭包思想与用法浅析
2018/12/27 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
美国潜水装备、水肺潜水和浮潜设备商店:Leisure Pro
2018/08/08 全球购物
质量承诺书范文
2014/03/27 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
可怜妈妈观后感
2015/06/09 职场文书
python编写五子棋游戏
2021/05/25 Python
Python如何让字典保持有序排列
2022/04/29 Python
基于Python实现西西成语接龙小助手
2022/08/05 Golang