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 相关文章推荐
php带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
PHP排序之二维数组的按照字母排序实现代码
Aug 13 PHP
php中将网址转换为超链接的函数
Sep 02 PHP
php 字符串替换的方法
Jan 10 PHP
PHP-Fcgi下PHP的执行时间设置方法
Aug 02 PHP
smarty简单分页的实现方法
Oct 27 PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
Mar 25 PHP
可兼容php5与php7的cURL文件上传功能实例分析
May 11 PHP
PHP html_entity_decode()函数讲解
Feb 25 PHP
PHP超级全局变量【$GLOBALS,$_SERVER,$_REQUEST等】用法实例分析
Dec 11 PHP
thinkphp5.1 框架导入/导出excel文件操作示例
May 25 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
用 php 编写的日历
2006/10/09 PHP
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
thinkphp5使用无限极分类
2019/02/18 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
点击文章内容处弹出页面代码
2009/10/01 Javascript
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
JavaScript实现大图轮播效果
2017/01/11 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
微信小程序App生命周期详解
2018/01/31 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
js 图片转base64的方式(两种)
2018/04/24 Javascript
Vue项目添加动态浏览器头部title的方法
2018/07/11 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
python实现图片筛选程序
2018/10/24 Python
详解如何设置Python环境变量?
2019/05/13 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
Python tcp传输代码实例解析
2020/03/18 Python
python中取绝对值简单方法总结
2020/07/24 Python
PHP面试题大全
2015/10/16 面试题
新员工欢迎词
2014/01/12 职场文书
答谢会策划方案
2014/05/12 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫