PHP图片处理之图片旋转和图片翻转实例
程序员文章站
2022-06-05 21:29:24
图片的旋转和翻转也是web项目中比较常见的功能,但这是两个不同的概念,图片的旋转是按特定的角度来转动图片,而图片的翻转则是将图片的内容按特定的方向对调。图片翻转需要自己编写...
图片的旋转和翻转也是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")
?>
上一篇: SQL查询语句精华使用简要第1/2页
下一篇: PHP调用wsdl文件类型的接口代码分享
推荐阅读
-
nodejs和php实现图片访问实时处理
-
Linux上安装Python的PIL和Pillow库处理图片的实例教程
-
PHP使用GIFEncoder类处理gif图片实例
-
Android Tween动画之RotateAnimation实现图片不停旋转效果实例介绍
-
nodejs和php实现图片访问实时处理
-
Linux上安装Python的PIL和Pillow库处理图片的实例教程
-
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
-
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
-
功能强大的PHP图片处理类(水印、透明度、旋转)
-
Android UI之ImageView实现图片旋转和缩放