Home > Backend Development > PHP Tutorial > php 封装gd 库

php 封装gd 库

WBOY
Release: 2016-06-23 13:36:16
Original
1198 people have browsed it

使用sae 版 thinkphp 在本地和sae 上无法实现缩略图,缩略图主要使用在瀑布流上面,不然一张图片2 3 M,速度太慢,就自己封装了一个,见笑!

<?php class Thumb{ // 设置最大宽度,用来在编辑器中使用和显示 private $max_width = null; private $file_name = null; private $water_name = null; //获得文件名和图片宽度 public function __construct($max_widht,$file_name,$water_name) { $this->max_width = $max_widht; $this->file_name = $file_name; $this->water_name = $water_name; } public function create_image(){ // 获得ori图片信息 list($width,$height,$type) = getimagesize($this->file_name); // 当原有图片大于 要求的最大宽度时,才需要进行压缩 if($width > $this->max_width){ // 获得图片压缩百分比 $per = $this->max_width / $width; $new_width = $width * $per; $new_height = $height * $per; }else{ $new_height = $height; $new_width = $width; } //创建一个真彩色图像 $image_p = imagecreatetruecolor($new_width, $new_height -10); $image = $this->image_obj($type, $this->file_name); imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); $this->image_dump($type, $image_p, $this->file_name); $this->water(); } /* * 生成为图片添加水印 */ private function water(){ $water_name = $this->water_name; $dist_name = $this->file_name; list($dist_width,$dist_height,$type) = getimagesize($dist_name); $dist_im = $this->image_obj($type, $this->file_name); $water_name = "D:/xampps/htdocs/buyingfeiblog/1/App/Modules/Admin/Tpl/Public/Images/water.png"; list($w_width,$w_height) = getimagesize($water_name); // 获得图片水印信息 $water_src = imagecreatefrompng($water_name); // 设置图片水印位置 在右下角 $x = ($dist_width - $w_width) / 4 * 3 ; $y =($dist_height - $w_height) /4 * 3 ; if(imagecopy($dist_im, $water_src, $x, $y, 0, 0, $w_width, $w_height)){ imagepng($dist_im,$dist_name); echo "success"; }else{ echo "error"; } } // 生成图片类型,生成不同图片 保持图片原本类型不发生变化 private function image_dump($type,$image_p,$filename){ switch ($type){ case 1: imagegif($image_p, $filename); $dis_im = imagecreatefromgif(file_name); break; case 2: imagejpeg($image_p, $this->file_name); $dis_im = imagecreatefromjpeg(file_name); break; case 3: imagepng($image_p,file_name); $dis_im = imagecreatefrompng(file_name); break; default : } } // 根据图片不同,生成不同资源对象 private function image_obj($type,$filename){ switch ($type){ // 1 = GIF,2 = JPG,3 = PNG, case 1: $image = imagecreatefromgif($filename); break; case 2: $image = imagecreatefromjpeg($filename); break; case 3: $image = imagecreatefrompng($filename); break; default : } return $image; } } $thumb = new Thumb(725,"D:/xampps/htdocs/test/test.jpg"); $thumb->create_image();//create_image ?>
Copy after login

就是这么简单,
主要包括生成真彩图,
创建图形对象资源
图片进行合并,ok!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template