zoukankan      html  css  js  c++  java
  • php 图片操作类 Intervention Image

    官方网址:http://image.intervention.io/

    1,安装 composer   require  intervention/image  (如果使用1.*的版本 ,要安装 "intervention/image": "1.*")

    2,使用并初始化对象

    require 'vendor/autoload.php';
    
    use InterventionImageImageManager;
    // 初始化图片驱动模块,默认是gd。也可以使用imagick 如下方式指定
    // $manager = new ImageManager(array('driver' => 'imagick'));
    $manager = new ImageManager();

    3,更改尺寸,并保存

    $image = $manager->make('bk/1.jpg')->resize(960, 540)->save('bk/1.jpg', 80);

    这里面设计图片对象的创建,更改尺寸,和保存三个步骤

    里面的make方法有多种调用形式,可以是图片路径,也可以是图片网址,也可以是输入的文件流。

    // create a new image resource from file
    $img = Image::make('public/foo.jpg');
    
    // or create a new image resource from binary data
    $img = Image::make(file_get_contents('public/foo.jpg'));
    
    // create a new image from gd resource
    $img = Image::make(imagecreatefromjpeg('public/foo.jpg'));
    
    // create a new image directly from an url
    $img = Image::make('http://example.com/example.jpg');
    
    // create a new image directly from Laravel file upload
    $img = Image::make(Input::file('photo'));

    resize方法也有多个调用形式,可以指定宽,高,回调函数 resize (integer $width, integer $height, [Closure $callback])

    更改尺寸是比较常用的方法,可以修改图片宽高到指定数值,也可以在回调函数里面限制图片不能超过本身原有尺寸。也可以只指定宽度或高度,回调里面进行尺寸比率约束。

    $img->resize(null, 400, function ($constraint) {
        $constraint->aspectRatio();
        $constraint->upsize();
    });

    save方法可以保存图片,也可以指定保存图片的质量,还可以更改图片格式 save([string $path, [int $quality], [string $format]])

    // open and resize an image file
    $img = Image::make('public/foo.jpg')->resize(300, 200);
    
    // save file as jpg with medium quality
    $img->save('public/bar.jpg', 60);
    
    // save the same file as jpg with default quality
    $img->save('public/baz.jpg');
    
    // save the file in png format
    $img->save('public/bar.png');
    
    // save the image jpg format defined by third parameter
    $img->save('public/foo', 80, 'jpg');

    4,增加文字  text(string $text, [integer $x, [integer $y, [Closure $callback]]])

    $manager->make('bk/0.jpg')->text(这是一段说明文字,可以作为防盗图使用,也可以作为水印使用。', 100, 100, function($font) {
        $font->file('bk/ygyxsziti2.0.ttf');
        $font->size(24);
        $font->color('#fdf6e3');
        $font->align('center');
        $font->valign('top');
        $font->angle(45);
    })->save('bk/3.jpg');

    text的方法可以给图片上添加文字说明,可以指定文字出行的位置,也可以在回调函数里面增加字体,文字大小,颜色等其他选项。

    5,图片进行叠加,插入水印图片 i nsert(mixed $source, [string $position, [integer $x, integer $y]])

    $img = $manager->make('bk/0.jpg');
    $watermark =  $manager->make('bk/1.jpg');
    $img->insert($watermark,  'bottom-right', 10, 10)->save('bk/4.jpg');

    水印只是这个方法的一种功能。其他可以自行扩展用法。

    posttion 参数

    top-left (default)
    top
    top-right
    left
    center
    right
    bottom-left
    bottom
    bottom-right

    6,裁剪图像 crop(int $width, int $height, [int $x, int $y])

    $img->crop(100, 100, 25, 25);

    7,图片镜像  上下翻转flip('v')  左右翻转flip('h')

    9,图片颜色反转  invert()

    10,操作完成后可以手动调用销毁方法,进行对象销毁。

    $image->destroy();

    其他更多方法可以查看文档。

  • 相关阅读:
    AndroidManifest.xml文件详解(activity)(二)
    Android Studio显示可视化编辑界面
    Delphi XE2 新增 System.Zip 单元,压缩和解压缩文件
    LockBox的安装
    Kernel的意义
    Mathematical optimization数学上的最优化
    矩阵分析
    【2008nmj】支持向量机
    【2008nmj】BP二元分类
    【2008nmj】Logistic回归二元分类感知器算法.docx
  • 原文地址:https://www.cnblogs.com/fslnet/p/15078384.html
Copyright © 2011-2022 走看看