zoukankan      html  css  js  c++  java
  • thinkphp 图形处理

    使用ThinkImage类进行图像处理功能,支持Gd库和Imagick库,包括对GIf图像处理的支持。

    实例化类库

    1. $image = new ThinkImage();

    默认使用GD库进行图像操作,如果需要使用Imagick库操作的话,需要改成:

    1. $image = new ThinkImage(ThinkImage::IMAGE_IMAGICK);
    2. // 或者采用
    3. $image = new ThinkImage('Imagick');

    图像操作

    下面来看下基础的图像操作功能的使用方法。

    打开图像文件

    假设当前入口文件目录下面有一个1.jpg文件,如图所示:

    1

    使用open方法打开图像文件进行相关操作:

    1. $image = new ThinkImage();
    2. $image->open('./1.jpg');

    也可以简化成下面的方式:

    1. $image = new ThinkImage(ThinkImage::IMAGE_GD,'./1.jpg'); // GD库
    2. // 或者
    3. $image = new ThinkImage(ThinkImage::IMAGE_IMAGICK,'./1.jpg'); // imagick库

    获取图像信息

    可以获取打开图片的信息,包括图像大小、类型等,例如:

    1. $image = new ThinkImage();
    2. $image->open('./1.jpg');
    3. $width = $image->width(); // 返回图片的宽度
    4. $height = $image->height(); // 返回图片的高度
    5. $type = $image->type(); // 返回图片的类型
    6. $mime = $image->mime(); // 返回图片的mime类型
    7. $size = $image->size(); // 返回图片的尺寸数组 0 图片宽度 1 图片高度

    裁剪图片

    使用crop和save方法完成裁剪图片功能。

    1. $image = new ThinkImage();
    2. $image->open('./1.jpg');
    3. //将图片裁剪为400x400并保存为corp.jpg
    4. $image->crop(400, 400)->save('./crop.jpg');

    生成的图片如图:

    crop

    支持从某个坐标开始裁剪,例如下面从(100,30)开始裁剪:

    1. $image = new ThinkImage();
    2. $image->open('./1.jpg');
    3. //将图片裁剪为400x400并保存为corp.jpg
    4. $image->crop(400, 400,100,30)->save('./crop.jpg');

    生成的图片如图:

    crop

    生成缩略图

    使用thumb方法生成缩略图

    1. $image = new ThinkImage();
    2. $image->open('./1.jpg');
    3. // 按照原图的比例生成一个最大为150*150的缩略图并保存为thumb.jpg
    4. $image->thumb(150, 150)->save('./thumb.jpg');

    生成的缩略图如图所示:

    thumb

    我们看到实际生成的缩略图并不是150*150,因为默认采用原图等比例缩放的方式生成缩略图,最大宽度是150。

    可以支持其他类型的缩略图生成,设置包括ThinkImage的下列常量或者对应的数字:

    1. IMAGE_THUMB_SCALE = 1 ; //等比例缩放类型
    2. IMAGE_THUMB_FILLED = 2 ; //缩放后填充类型
    3. IMAGE_THUMB_CENTER = 3 ; //居中裁剪类型
    4. IMAGE_THUMB_NORTHWEST = 4 ; //左上角裁剪类型
    5. IMAGE_THUMB_SOUTHEAST = 5 ; //右下角裁剪类型
    6. IMAGE_THUMB_FIXED = 6 ; //固定尺寸缩放类型

    例如:

    居中裁剪

    1. $image = new ThinkImage();
    2. $image->open('./1.jpg');
    3. // 生成一个居中裁剪为150*150的缩略图并保存为thumb.jpg
    4. $image->thumb(150, 150,ThinkImage::IMAGE_THUMB_CENTER)->save('./thumb.jpg');

    居中裁剪后生成的缩略图效果如图:

    thumb

    左上角剪裁

    1. $image = new ThinkImage();
    2. $image->open('./1.jpg');
    3. // 生成一个左上角裁剪为150*150的缩略图并保存为thumb.jpg
    4. $image->thumb(150, 150,ThinkImage::IMAGE_THUMB_NORTHWEST)->save('./thumb.jpg');

    左上角裁剪后生成的缩略图效果如图:

    thumb

    缩放填充个转广州大理石平台

    1. $image = new ThinkImage();
    2. $image->open('./1.jpg');
    3. // 生成一个缩放后填充大小150*150的缩略图并保存为thumb.jpg
    4. $image->thumb(150, 150,ThinkImage::IMAGE_THUMB_FILLED)->save('./thumb.jpg');

    缩放填充后生成的缩略图效果如图:

    thumb

    固定大小

    1. $image = new ThinkImage();
    2. $image->open('./1.jpg');
    3. // 生成一个固定大小为150*150的缩略图并保存为thumb.jpg
    4. $image->thumb(150, 150,ThinkImage::IMAGE_THUMB_FIXED)->save('./thumb.jpg');

    采用固定大小的缩略图可能会有所变形,生成的缩略图效果如图:

    thumb

    添加图片水印

    1. $image = new ThinkImage();
    2. $image->open('./1.jpg');
    3. //将图片裁剪为440x440并保存为corp.jpg
    4. $image->crop(440, 440)->save('./crop.jpg');
    5. // 给裁剪后的图片添加图片水印(水印文件位于./logo.png),位置为右下角,保存为water.gif
    6. $image->water('./logo.png')->save("water.gif");
    7. // 给原图添加水印并保存为water_o.gif(需要重新打开原图)
    8. $image->open('./1.jpg')->water('./logo.png')->save("water_o.gif");

    water方法的第二个参数表示水印的位置,可以传入下列ThinkImag类的常量或者对应的数字:

    1. IMAGE_WATER_NORTHWEST = 1 ; //左上角水印
    2. IMAGE_WATER_NORTH = 2 ; //上居中水印
    3. IMAGE_WATER_NORTHEAST = 3 ; //右上角水印
    4. IMAGE_WATER_WEST = 4 ; //左居中水印
    5. IMAGE_WATER_CENTER = 5 ; //居中水印
    6. IMAGE_WATER_EAST = 6 ; //右居中水印
    7. IMAGE_WATER_SOUTHWEST = 7 ; //左下角水印
    8. IMAGE_WATER_SOUTH = 8 ; //下居中水印
    9. IMAGE_WATER_SOUTHEAST = 9 ; //右下角水印

    例如:

    1. $image = new ThinkImage();
    2. // 在图片左上角添加水印(水印文件位于./logo.png) 并保存为water.jpg
    3. $image->open('./1.jpg')->water('./logo.png',ThinkImage::IMAGE_WATER_NORTHWEST)->save("water.jpg");

    生成的图片效果如下:

    water

    还可以支持水印图片的透明度(0~100,默认值是80),例如:

    1. $image = new ThinkImage();
    2. // 在图片左上角添加水印(水印文件位于./logo.png) 水印图片的透明度为50 并保存为water.jpg
    3. $image->open('./1.jpg')->water('./logo.png',ThinkImage::IMAGE_WATER_NORTHWEST,50)->save("water.jpg");

    生成的效果如下:

    water

    也可以支持给图片添加文字水印(假设在入口文件的同级目录下存在1.ttf字体文件),例如:

    1. $image = new ThinkImage();
    2. // 在图片右下角添加水印文字 ThinkPHP 并保存为new.jpg
    3. $image->open('./1.jpg')->text('ThinkPHP','./1.ttf',20,'#000000',ThinkImage::IMAGE_WATER_SOUTHEAST)->save("new.jpg");
    复制代码
     

    生成的图片效果:

    new

  • 相关阅读:
    asp.net core 不依赖autofac实现aop
    C# 获取调用者信息
    IIS 命令学习
    Jenkins + PowerShell + .net core 自动打包
    gogs 自定义配置
    搜索文件内容神器:SearchMyFiles
    非常强大的磁盘计算大小工具:TreeSizeFree
    rancher入门教程
    IQueryable 表达式解析学习
    Sql server 入门权威指南
  • 原文地址:https://www.cnblogs.com/furuihua/p/11851047.html
Copyright © 2011-2022 走看看