您的位置:首页 > 其它

GD库添加图片水印和缩略图

2016-03-16 13:50 295 查看
在平时,我们经常遇到给图片加水印的问题,例如给图片加水印做版权保护,我们可以通过GD库来解决这个问题。

首先就是开启GD库

在php.ini文件里面可以开启GD库。

建立操作图像类image.class.php

<?php
class Image {
/*图片基本信息*/
private $info;
/*打开图片,读取到内存中*/
public function __construct($src) {
$info = getimagesize($src);
$this->info = array(
'width' => $info[0],
'height' => $info[1],
'type' => image_type_to_extension($info[2],false),
'mime' => $info['mime']
);
$fun = "imagecreatefrom{$this->info['type']}";
$this->image = $fun($src);
}
/*压缩图片*/
public function thumb($width, $height) {
$image_thumb = imagecreatetruecolor($width, $height);
imagecopyresampled($image_thumb, $this->image, 0, 0, 0, 0, $width, $height, $this->info['width'], $this->info['height']);
imagedestroy($this->image);
$this->image = $image_thumb;
}
/*操作图片(添加文字水印)*/
public function fontMark($content, $font_url, $size, $color, $local, $angle) {
$col = imagecolorallocatealpha($this->image, $color[0], $color[1], $color[2]);
imagettftext($this->image, $size, $angle, $local['x']
4000
, $local['y'], $col, $font_url, $content);
}
/*操作图片(添加图片水印)*/
public function imageMark($source, $local, $alpha) {
$info = getimagesize($source);
$type = image_type_to_extension($info[2],false);
$fun = "imagecreatefrom{$type}";
$water = $fun($source);
imagecopymerge($this->image, $water, $local['x'], $local['y'], 0, 0, $info[0], $info[1], $alpha);
imagedestroy($water);
}
/*在浏览器中输出图片*/
public function show() {
header("Content-type:".$this->info['mime']);
$funs = "image{$this->info['type']}";
$funs($this->image);
}
/*把图片保存到硬盘中*/
public function save($newname) {
$funs = "image{$this->info['type']}";
$funs($this->image, $newname.".".$this->info['type']);
}
/*销毁图片*/
public function __destruct() {
imagedestroy($this->image);
}
}
?>


测试test.php(测试字体水印和缩略图)

require 'image.class.php';
$src = "image1.jpg";
$content = "Hello World!";
$font_url = "msyh.ttf";
$size = 20;
$color = array(
0 => 255,
1 => 255,
2 => 255,
3 => 20
);
$local = array(
'x' => 20,
'y' => 70
);
$angle = 10;
$image = new Image($src);
$image->fontMark($content, $font_url, $size, $color, $local, $angle);
$image->show();
$image->save("fontMark");


总结:1.这篇写的太草率了;

2.掌握了面向对象的思想在编程中真的很有用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息