使用php的imagerotate方法,用给定角度旋转图像
1 2 3 4 |
imagerotate ( resource $image , float $angle , int $bgd_color [, int $ignore_transparent = 0 ] ) 将 src_im 图像用给定的 angle 角度旋转。bgd_color 指定了旋转后没有覆盖到的部分的颜色。 旋转的中心是图像的中心,旋转后的图像会按比例缩小以适合目标图像的大小——边缘不会被剪去。 |
结合之前的章节,处理更多细节
旋转的代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
private function do_rotate() { // Perform the rotation if (empty($this->bg_color)) { $bg_color = imagecolorallocatealpha($this->image, 0, 0, 0, 127); } else { $rgba = $this->normalize_color($this->bg_color); $bg_color = imagecolorallocatealpha($this->image, $rgba['r'], $rgba['g'], $rgba['b'], $rgba['a']); } $new = imagerotate($this->image, -($this->keep_within($this->angle, -360, 360)), $bg_color, 0); imagesavealpha($new, true); imagealphablending($new, true); // Update meta data $this->original_info['width'] = imagesx($new); $this->original_info['height'] = imagesy($new); $this->image = $new; return $this; } |
使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
use com\jdk5\blog\Image\Image; require '../Image.php'; $img = new Image(); $img->load('org.jpg') //->width(200) //设置生成图片的宽度,高度将按照宽度等比例缩放 //->height(200) //设置生成图片的高度,宽度将按照高度等比例缩放 ->size(300, 300) //设置生成图片的宽度和高度 ->fixed_given_size(true) //生成的图片是否以给定的宽度和高度为准 ->keep_ratio(true) //是否保持原图片的原比例 ->bgcolor("#ffffff") //设置背景颜色,按照rgb格式 ->rotate(20) //指定旋转的角度 ->quality(50) //设置生成图片的质量 0-100,如果生成的图片格式为png格式,数字越大,压缩越大,如果是其他格式,如jpg,gif,数组越小,压缩越大 ->save('processed/org-width-resize.jpg'); //保存生成图片的路径 |
下载:前往下载