php 封装gd 库

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

时间: 2024-10-20 14:30:08

php 封装gd 库的相关文章

GD库的基本信息,图像的旋转、水印、缩略图、验证码,以及图像类的封装

GD库检测 <?php phpinfo(); ?> GD库安装• Windows 使用phpstudy • Linux 编译安装 –with-gd• Linux 编译安装扩展 GD库支持的图像格式 使用 gd_info() 函数 检测服务器支持的图像格式 图像信息处理 <?php //获取图像详细信息 $image = '../image/b.png'; $info = getimagesize($image); var_dump($info); $string = file_get_c

php使用GD库实现图片水印和缩略图——封装成类

学完了如何使用GD库来实现对图片的各种处理,那么我们可以发现,不管哪种方法,都有相似之处,如果我们把这些相似的地方和不相似的地方都封装成类,这样就可以提升代码的速度,而且节省了很多时间,废话不多说,来人,上代码! 首先,先创建一个PHP文件:class.php(自定义) 我们知道,在 在原始图片中添加文字水印:http://www.cnblogs.com/finalanddistance/p/7243346.html 在原始图片中添加图片水印:http://www.cnblogs.com/fin

GD库使用小结---1

因为一开始,“大家”都说一般任务中,用php操作图片不常见,像我们这种基本业务型的,就更用不到了,所以先别看,偶就没有看.现在有机会了自然要来玩一把. 以前学过C#的GDI+,交了课程设计后忘得一干二净.又被迫学了点MFC的画图,觉得这是最蛋疼的画图过程.去年做了个小任务时用到了js图表控件,用的是封装好的js库直接调方法,然后发现这是用HTML5的canvas元素结合js打造而成,这些chart控件很多很漂亮:jsChart.HighChart.EChart.aChart.Chart.js等等

PHP利用GD库画图和生成验证码图片

首先得确定php.ini设置有没有打开GD扩展功能,测试如下 print_r(gd_info()); 如果有打印出内容如下,则说明GD功能有打开: Array ( [GD Version] => bundled (2.0.34 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => 1 [GIF Read Support] => 1 [GIF Crea

PHP学习笔记-GD库与Jpgraph的使用

转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/52281196 本文出自:[顾林海的博客] 前言 学习PHP从第一篇笔记到现在这篇,已经十多篇了,每天花时间去学习是需要毅力的,好在自己对IT这行也是比较感兴趣,算是每天自娱自乐吧,下周一就去考科目三了,想想也是醉了,拖这么长时间. GD库 GD库是一个开放的动态创建图像.源代码公开的函数库,可以从官方网站http://www.boutell.com/gd处下载.目前,

安装GD库解决ThinkPHP 验证码Call to undefined function Think\imagecreate()出错

在php中imagecreate函数是一个图形处理函数,主要用于新建一个基于调色板的图像了,然后在这个基础上我们可以创建一些图形数字字符之类的,但这个函数需要GD库支持,如果没有开启GD库使用时会提示Call to undefined function imagecreate()错误. 例,我在测试一个简单生成图形时实例 Example #1 新建一个新的 GD 图像流并输出图像  代码如下 复制代码 <?php header("Content-type: image/png")

php GD库

php 中之前比较常使用的是GD库来画图像,这个使用得比较多的是验证码的使用.首先GD库画图必须要有的一些步骤: 首先,创建画布,其次,绘制图片轮廓和画本,再次是输出图型,最后是释放资源. 创建方法如下: imagecreatetruecolor(int width,int height); 填充颜色: $color=imagecolorallocate($resouces,int a,int g,int b); 颜色填充: imagefill($resouces,int start,int s

php GD库常用画图型函数

php GD库画各种的图像函数: 如下: 1.画一个像素:imagesetpixed(int x,int y); 2.画矩形:imagerectange($res,$x,$y,$x1,$x2,$color);两个点实现画矩形 3.imagefilledrectange();参数和上面一样 4.画椭圆: imageellipse($res,int x,int y,int cr,int cy,int color);资源,中心,宽度和高度 5.画一个字符串 imagestring($res,int f

PHP学习笔记-----GD库

PHP中GD库的使用 最新的GD库版本支持GIF.JPEG.PNG.WBMP.XBM等格式的图像文件. 创建图像应该完成如下所示的4个步骤. (1)      创建画布 (2)      绘制图像 (3)      输出图像 (4)      释放资源 画布管理 imagecreate()//新建一个基于调色板的图像 imagecreatetruecolor()//新建一个真彩***像 设置颜色 imagecolorallocate()//为一副图像分配颜色 生成图像 imagegif() im