ImageTool.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
<?php class ImageTool { private $imagePath ; //图片路径 private $outputDir ; //输出文件夹 private $memoryImg ; //内存图像 public function __construct( $imagePath , $outputDir = null) { $this ->imagePath = $imagePath ; $this ->outputDir = $outputDir ; $this ->memoryImg = null; } /** * 显示内存中的图片 * @param $image */ public function showImage() { if ( $this ->memoryImg != null) { $info = getimagesize ( $this ->imagePath); $type = image_type_to_extension( $info [2], false); header( 'Content-type:' . $info [ 'mime' ]); $funs = "image{$type}" ; $funs ( $this ->memoryImg); imagedestroy( $this ->memoryImg); $this ->memoryImg = null; } } /**将图片以文件形式保存 * @param $image */ private function saveImage( $image ) { $info = getimagesize ( $this ->imagePath); $type = image_type_to_extension( $info [2], false); $funs = "image{$type}" ; if ( empty ( $this ->outputDir)) { $funs ( $image , md5( $this ->imagePath) . '.' . $type ); } else { $funs ( $image , $this ->outputDir . md5( $this ->imagePath) . '.' . $type ); } } /** * 压缩图片 * @param $width 压缩后宽度 * @param $height 压缩后高度 * @param bool $output 是否输出文件 * @return resource */ public function compressImage( $width , $height , $output = false) { $image = null; $info = getimagesize ( $this ->imagePath); $type = image_type_to_extension( $info [2], false); $fun = "imagecreatefrom{$type}" ; $image = $fun ( $this ->imagePath); $thumbnail = imagecreatetruecolor( $width , $height ); imagecopyresampled( $thumbnail , $image , 0, 0, 0, 0, $width , $height , $info [0], $info [1]); imagedestroy( $image ); if ( $output ) { $this ->saveImage( $thumbnail ); } $this ->memoryImg = $thumbnail ; return $this ; } /** * 为图像添加文字标记 * * @param $content 文本内容 * @param $size 字体大小 * @param $font 字体样式 * @param bool $output 是否输出文件 * @return $this */ public function addTextmark( $content , $size , $font , $output = false) { $info = getimagesize ( $this ->imagePath); $type = image_type_to_extension( $info [2], false); $fun = "imagecreatefrom{$type}" ; $image = $fun ( $this ->imagePath); $color = imagecolorallocatealpha( $image , 0, 0, 0, 80); $posX = imagesx( $image ) - strlen ( $content ) * $size / 2; $posY = imagesy( $image ) - $size / 1.5; imagettftext( $image , $size , 0, $posX , $posY , $color , $font , $content ); if ( $output ) { $this ->saveImage( $image ); } $this ->memoryImg = $image ; return $this ; } /** * 为图片添加水印 * * @param $watermark 水印图片路径 * @param $alpha 水印透明度(0-100) * @param bool $output 是否输出文件 * @return $this */ public function addWatermark( $watermark , $alpha , $output = false) { $image_info = getimagesize ( $this ->imagePath); $image_type = image_type_to_extension( $image_info [2], false); $image_fun = "imagecreatefrom{$image_type}" ; $image = $image_fun ( $this ->imagePath); $mark_info = getimagesize ( $watermark ); $mark_type = image_type_to_extension( $mark_info [2], false); $mark_fun = "imagecreatefrom{$mark_type}" ; $mark = $mark_fun ( $watermark ); $posX = imagesx( $image ) - imagesx( $mark ); $posY = imagesy( $image ) - imagesy( $mark ); imagecopymerge( $image , $mark , $posX , $posY , 0, 0, $mark_info [0], $mark_info [1], $alpha ); if ( $output ) { $this ->saveImage( $image ); } $this ->memoryImg = $image ; return $this ; } } |
ImageTool使用
首先导入ImageTool工具:
1
|
require_once 'ImageTool.class.php' ; |
然后实例化ImageTool对象:
1
|
$imageTool = new ImageTool( 'img/oppman.jpeg' , 'out/' ); //图片路径、输出文件夹 |
一、生成压缩图片
1
2
|
$imageTool ->compressImage(350, 250, true); //压缩宽度、压缩高度、是否保存 $imageTool ->showImage(); |
二、添加文字水印
1
2
|
$imageTool ->addTextmark( '一拳超人' , 50, 'res/micro.ttf' , true); //内容、尺寸、字体、是否保存 $imageTool ->showImage(); |
三、添加图片水印
1
2
|
$imageTool ->addWatermark( 'res/logo.jpeg' , 100, true); //水印路径、透明度、是否保存 $imageTool ->showImage(); |
仅当做临时图像输出:
1
|
$imageTool ->addTextmark( '快捷输出' , 50, 'res/micro.ttf' )->showImage(); |
原文链接:http://www.cnblogs.com/woider/p/5840943.html
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容