php 封装gd 库

WBOY
WBOYOriginal
2016-06-23 13:36:161202Durchsuche

使用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 ?>

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn