系统需求 PHP >= 5.3 Fileinfo Extension GD Library (>=2.0) … or … Imagick PHP extension (>=6.5.7)

安装部署 Integration/image 在 composer.json [require] 节增加,之后执行 composer update "intervention/image": "2.0.15"

Laravel 配置 安装部署 Integration/image 完成后,打开配置文件 config/app.php 在相应位置添加代码,然后 Image 类就能自动加载并可供使用了。其功能强大到可以处理你的几乎所有图片处理需求。

use Intervention\Image\Facades\Image;
  1. he GD library does not support custom fonts. You are supposed to use Imagick. Go to config/image.php and edit the driver value to 'imagick' (after you actually install the extension for it):

    'driver' => 'imagick'  要安装imagick扩展

  2. asset('/web/fonts/OpenSans-Regular.ttf') returns an URL. You have to provide a path. Use public_path('web/fonts/OpenSans-Regular.ttf') instead. //一定要用绝对路径  不然报错 GD Warning: imagettfbbox(): Could not find/open font

     
  3. 给图片添加文字水印时,中文显示乱码 的解决办法 :一定要引用GD支持的中文字体文件  并 转UTF-8

  4. $fontfile = "simkai.ttf";     /* $fontfile 字体的路径,视操作系统而定,可以是 simhei.ttf(黑体) , SIMKAI.TTF(楷体) , SIMFANG.TTF(仿宋) ,SIMSUN.TTC(宋体&新宋体) 等 GD 支持的中文字体*/$str   = iconv('GB2312','UTF-8','php自学网');     /*将 gb2312 的字符集转换成 UTF-8 的字符*/

 

//服务提供器 'Intervention\Image\ImageServiceProvider' //别名配置 'Image' => 'Intervention\Image\Facades\Image' 配置设置 默认情况下, Integration/Image 使用PHP的GD库扩展。如果你想切换到 imagick,你可以使用 php artisan 创建一个配置文件以添加相应的配置。 $ php artisan config:publish intervention/imag 基本使用 这里列出几个基本功能,更详细使用说明请查看相关接口文档。1、显示一张图片 Route::get('/', function() { $img = Image::make('foo.jpg')->resize(300, 200); return $img->response('jpg'); }); 2、读取一个图片文件 $img = Image::make('foo/bar/baz.jpg'); 3、绘制一张图片 $img = Image::canvas(800, 600, '#ccc'); 4、编辑一张图片 $img = Image::make('foo.jpg')->resize(320, 240)->insert('watermark.png');

安装:
    需求:
        PHP >= 5.4
        Fileinfo 扩展
        GD库 >= 2.0
        Imagick 扩展 >=6.5.7
    composer安装:
        composer require intervention/image
    laravel配置:
        1.编辑 config/app.php
            $providers 添加 'Intervention\Image\ImageServiceProvider::class'
            $aliases 添加 ''Image' => Intervention\Image\Facades\Image::class'
        2.默认使用的是 'GD' 库,想修改的话,需要配置驱动,我们来生成配置文件:
            php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"
            生成 config/image.php 配置文件
        3.PHP涉及到的配置项:
            memory_limit - 最大内存限制
            upload_max_filesize - 如果上传图片时,可能修改
            -----
            其实,可能还有好多
            max_execution_time - 最大执行时间
            ...
 
基本使用:
    1.使用 Intervention\Image\ImageManager - 图片管理类
        use Intervention\Image\ImageManager;
        $manager = new ImageManager(array('driver' => 'imagick'));
        $manager->make('public/foo.jpg');
    2.使用 ImageManager 的静态版本
        use Intervention\Image\ImageManagerStatic as Image;
        Image::configure(array('driver' => 'imagick'));        ------- api中未出现此方法
        Image::make('public/foo.jpg');    
    
HTTP响应:
    1.将图像直接返回到用户浏览器的最简单的方法是输出response()方法。 它将根据当前图像自动发送HTTP头,并输出编码的图像数据。
        $img = Image::canvas(800, 600, '#ff0000');
        echo $img->response('jpg', 70);
    2.手动发送HTTP响应
        $img = Image::canvas(800, 600, '#ff0000');
        header('Content-Type: image/png');
        echo $img->encode('png');
 
    在laravel中,同上面的2种方法一样:
 
    3.
        $img = Image::canvas(800, 600, '#ff0000');
        return $img->response();
    4.
        $img = Image::canvas(800, 600, '#ff0000');
        $response = Response::make($img->encode('png'));
        $response->header('Content-Type', 'image/png');
        return $response;
    
图片上传:
    1.直接从 $_FILES 中,获取 'tmp' 临时图片数据
        $img = Image::make($_FILES['image']['tmp_name']);        // Image::make() 支持这种方式
        $img->fit(300, 200);
        $img->save('public/bar.jpg');
    2.在laravel中处理图片上传
        Image::make(Input::file('photo'));                        // Input::file() 来获取$_FILES
 
图片过滤器:
    图片过滤器,给了我们非常有用的方式,将多个图像转换命令集合在一个专用类中。(可将多个图像处理步骤,封装成一个过滤器)。
    Intervention/image,提供了基本接口(Intervention\Image\Filters\FilterInterface),所有的过滤器都需要实现它。
    调用过滤器:
        $img = Image::make('foo.jpg');
        $img->filter(new DemoFilter(5));
    定义过滤器:
        src/Intervention/Image/Filters/DemoFilter.php
        <?php
            namespace Intervention\Image\Filters;
 
            class DemoFilter implements FilterInterface
            {
                /**
                 * Default size of filter effects
                 */
                const DEFAULT_SIZE = 10;
 
                /**
                 * Size of filter effects
                 *
                 * @var integer
                 */
                private $size;
 
                /**
                 * Creates new instance of filter
                 *
                 * @param integer $size
                 */
                public function __construct($size = null)
                {
                    $this->size = is_numeric($size) ? intval($size) : self::DEFAULT_SIZE;
                }
 
                /**
                 * Applies filter effects to given image
                 *
                 * @param  Intervention\Image\Image $image
                 * @return Intervention\Image\Image
                 */
                public function applyFilter(\Intervention\Image\Image $image)
                {
                    $image->pixelate($this->size);
                    $image->greyscale();
 
                    return $image;
                }
            }
        ?>
 
图像缓存:
    图像缓存包,扩展了缓存图像的能力。
 
    缓存包使用laravel的 'Illuminate/Cache' 包。基于laravel的缓存配置,可以使用 '文件系统'、'数据库'、'Memcached'或'Redis' 来作为临时缓冲存储
 
    原理很简单。一旦安装了缓存包,就可以调用静态缓存方法。每个对 Intervention/Image 类的方法调用,都会被缓存接口捕获和检查。如果这个特定的操作序列意境生成过,将直接从缓存中获取数据,而不是重新执行一遍资源密集型的GD操作
 
    安装:
        composer require intervention/imagecache
 
    使用方式:
        $img = Image::cache(function($image){
            $image->make('public/foo.jpg')->resize(300, 200)->greyscale();
        });
 
基于URL的图像操作:
    在Laravel应用程序中,可以使用URL来动态操作图像。 URL图像的操作版本将存储在缓存中,并且将直接加载而无需资源密集型GD操作。
 
    图像必须上传一次。当通过HTTP请求方式访问文件,所有操作(例如:调整大小、裁剪)将稍后处理,例如:
        http://yourhost.com/{route-name}/{template-name}/{file-name}
 
    1.安装:
        composer require intervention/image
        composer require intervention/imagecache
    2.生成配置文件
        php artisan vendor:publish
        生成 config/imagecache.php
    3.启用操作
        默认情况下,基于URL的图像操作是关闭的。在imagecache.php配置文件中,来指定 'route' 配置项
            'route' => 'imagecache'    
        配置好route后,可以通过artisan命令,列出所有已注册的路有,并检查新路有是否正确列出:
              php artisan route:list
    4.定义资源目录
        告诉PHP,在哪里搜索图片。我们可以定义自己喜欢的任意数量的目录。例如:定义应用程序的所有上传目录。应用程序将在目录中搜索在路有中提交的文件。
            'paths' => array(
                'storage/uploads/images',
                public_path('img'),
            ),
        在这些目录中保存具有唯一文件名的图像文件是有意义的。否则,包将返回首先找到的图像。
        注意:    
            出于安全原因,路由仅接受由以下字符组成的文件名:
                a-zA-Z0-9-_/.
    5.模板
        模板的定义,就是过滤器类的名称,可以在其中定义任意操作命令(之前介绍过过滤器)。系统自带3个基本模板:
            small - 120x90
            medium - 240x180
            large - 480x360
        我们可以在配置文件中,自由配置可用的模板:
            'templates' => array(
                'small' => 'Intervention\Image\Templates\Small',
                'medium' => 'Intervention\Image\Templates\Medium',
                'large' => 'Intervention\Image\Templates\Large',
            ),
        访问原始图片:
            original - 使用原始图像文件,发送HTTP响应
            download - 发送HTTP响应并强制浏览器下载原始图像文件,而不是显示它。
            例如:
                http://yourhost.com/{route-name}/original/{file-name}
    6.图像缓存的生命周期:
        一旦第一次访问了URL,搜索图片,并根据模板,编辑图像,并存储到缓存中。 所以下次访问URL时,所有的GD操作都被绕过,文件将直接来自缓存
            'lifetime' => 43200,        // 单位是 'minutes-分钟'
 
 
支持的格式:
    图片格式:
        GD库:jpeg, png, gif
        Imagick库:jpeg, png, gif, tif, bmp, ico, psd
    颜色格式:
        整数
            $color = Image::make('public/foo.jpg')->pickColor(10, 10);    // pickColor()返回的是整数形式的RGB值
            $img->fill($color);
        数组
            $img->fill(array(255, 0, 0));
            $img->fill(array(255, 0, 0, 0.5));
        16进制
            $img->fill('#000000');
        RGB和RGBA字符串格式
            $img->fill('rgb(255, 0, 0)');
            $img->fill('rgb(255, 0, 0, 0.5)');
 
创建图像:
    1.canvas($width, $height [, mixed $bgcolor]) - 创建一个空的画布
 
        构造方法,使用给定的宽、高,创建一个新的空的图像实例。可以选择性的定义一个背景色。默认画布背景是透明(transparent)的。
 
        示例:
            $img = Image::canvas(800, 600);
            $img = Image::canvas(32, 32, '#ff0000');
 
    2.make($source) - 从给定的资料中读取图像
 
        从资源中创建新的图像实例的通用工厂方法。该方法高度可变,可读取下面列出的所有输入类型:
            string - 文件系统的图片路径
            string - 图片的URL地址(allow_url_fopen必须启用)
            string - 二进制图片数据
            string - data-url编码的图片数据
            string - base64编码的图片数据
            resource - gd类型的PHP资源(当使用GD库)
            object - Imagick实例(当使用Imagick库)
            object - Intervention\Image\Image 实例
            object - SplFileInfo instance (To handle Laravel file uploads via Symfony\Component\HttpFoundation\File\UploadedFile) - laravel框架自带的图片上传实例
 
销毁图像:
    1.destroy() - 销毁图像
 
        在PHP脚本结束前,释放当前图像实例相关的内存。通常资源会在脚本结束后,自动释放。
        当然,该方法调用后,图像实例不再可用。
 
        示例:
            $img = Image::make('public/foo.jpg');
            $img->resize(320, 240);
            $img->save('public/small.jpg');
            $img->destroy();
 
图像输出:
    1.response([string $format [, integer $quality]]) - 直接作为HTTP响应
 
        以指定的格式和图像质量,来发送当前图像,作为HTTP响应
        $format - 可以是:jpg,png,gif,tif,bmp。默认是jpeg
        $quality - 从0-100.默认是90
 
    2.save([string $path [, int $quality]]) - 保存图像到指定路径(未指定,则表示覆盖原图)
 
        将图像对象的当前状态保存到文件系统中。可指定路径和图像质量。
        保存到图像类型通过文件后缀来定义。例如:foo.jpg 图片将被保存为 'JPG' 格式。如果未指定可用后缀,首先尝试图像的MIME类型,如果失败,将被编码为 'JPEG'
        此外,图像将始终以RGB颜色模式保存,而没有嵌入的颜色配置文件。
        $path - 指定图像数据写入的文件路径。如果图像是从一个存在的文件路径创建的,同时我们未指定 $path,将会尝试覆盖该路径。
 
        示例:
            $img = Image::make('public/foo.jpg')->resize(300, 200);
            $img->save('public/bar.png', 60);
            $img->save('public/bar.jpg');
 
    3.stream([mixed $format [, int $quality]]) - 图像流
 
        以给定格式和给定图像质量,对当前图像进行编码,并基于图像数据,创建新的PSR-7流。
 
    4.encode([$format [, $quality]]) - 图像进行编码
 
        将当前图片,按给定的格式和图片质量进行编码
 
        $format - jpg、png、gif、tif、bmp、data-url(base64)。默认返回的编码后的数据。默认类型是 'jpeg'
        $quality - 返回从 0-100。0-最低,100最大。只对 'jpg' 编码格式有效,因为png压缩是无损的,不会影响图片质量。默认是90
 
        示例:
            $jpg = (string) Image::make('public/foo.png')->encode('jpg', 75);
            $data = (string) Image::make('public/foo.png')->encode('data-url');
 
图像缓存相关
    1.cache(Closure $callback [, int $lifetime [,bool $returnObj]]) - 图像缓存
 
        $callback - 从Closure回调,创建新的缓存图像实例。
        $lifetime - 为回调传递一个生命周期
        $returnObj - 获取一个Intervention图像实例作为返回值,还是直接接收图像流。
        cache()方法,需要安装额外的 'intervention/imagecache' 依赖包
 
        示例:
            $img = Image::cache(function($image){
                $image->make('public/foo.jpg')->resize(300, 200)->greyscale();
            }, 10, true);
 
    2.backup($name = 'default') - 图像状态备份
 
        备份当前图片的状态。将图片的当前状态备份到 $name。之后,可以调用 reset($name = 'default') 来进行状态恢复。
 
        $name默认是'default'。我们可以传递不同的$name,来记录图片处理过程中的多个状态
 
        示例:
            $img = Image::canvas(120, 90, '#000');
            $img->fill('#f00');
            $img->backup();
            $img->fill('#0f0');
            $img->reset();
 
    3.reset($name = 'default') - 图像状态恢复
 
        backup()用于备份图像状态,reset()用于恢复到之前的某个备份    
 
原生图像处理驱动调用:
    1.getCore() - GD库|Imagick库 对象调用
 
        以特定驱动的核心格式,返回当前图像。如果使用的是 'GD' 库,则返回 GD 资源类型;如果使用的是 'Imagick',则返回一个 Imagick 对象。
 
        示例:
            $img = Image::make('public/foo.jpg');
            $imagick = $img->getCore();            // 返回原始的 'imagick' 对象
            $imagick->embossImage(0, 1);        // 就可以调用 'imagick' 的方法了
 
调整图像尺寸:
    1.resize($width, $height [,Closure $callback]) - 调整图像尺寸
 
        使用给定的宽、高,来调整当前图像。传递一个可选的Closure回调来约束resize命令。
        回调函数,定义了resize命令的约束。可约束图像的 '宽高比(aspect-ratio)' 和 '不希望的大小(a unwanted upsizing)'
            aspectRatio()
                约束当前图像的宽高比。作为比例调整大小的快捷方式,可以使用 widen() 和 heighten()
            upsize()
                保持图像大小
 
        示例:
            $img = Image::make('public/foo.jpg');
            $img->resize(300, 200);
            $img->resize(300, null);
            $img->resize(null, 200);
            $img->resize(300, null, function($constraint){        // 调整图像的宽到300,并约束宽高比(高自动)
                $constraint->aspectRatio();
            });
            $img->resize(null, 200, function($constraint){        // 调整图像的高到200,并约束宽高比(宽自动)
                $constraint->aspectRatio();
            });
            $img->resize(null, 400, function($constraint){        // 阻止可能的尺寸变化(保持图像大小)
                $constraint->aspectRatio();
                $constraint->upsize();
            });
 
    2.widen($width [, Closure $callback]) - 调整图像宽(保持宽高比)
 
        调整图像的宽到给定的宽度,保持宽高比。传递一个可选的回调函数,来应用额外的约束,例如:阻止可能的尺寸变化
            upsize()
                保持图像大小
 
    3.heighten($height [, Closure $callback]) - 调整图像高(保持宽高比)
 
        调整图像的高到给定的高度,保持宽高比。传递一个可选的回调函数,来应用额外的约束,例如:阻止可能的尺寸变化
            upsize()
                保持图像大小
 
    4.crop($width, $height [, $x, $y]) - 裁剪图像
 
        使用给定的宽、高,裁剪当前图像的一个矩形区域。默认从图像的0.0开始,可传递一个坐标,定位裁剪的起始点。
 
        示例:    
            $img = Image::make('public/foo.jpg');
            $img->crop(100, 100, 20, 20);
 
    5.fit($width [[$height] [, Closure $callback [, $position]]]) - 智能裁剪和调整
 
        以一个智能的方式,结合裁剪和调整来格式化图片。该方法将会自动找到给定的宽、高的最佳宽高比,裁剪并调整到给定尺寸。
        $callback - 回调函数,来约束可能的尺寸变化
            upsize()
                保持图像大小
 
        $position - 自定义裁剪的位置。默认是 '中心'
            top-left
            top
            top-right
            left
            center(默认)
            right
            bottom-left
            bottom
            bottom-right
 
    6.resizeCanvas($width, $height [, $anchor [, bool $relative [, $bgcolor]]])
 
        调整当前图像的边界到给定的宽和高。
 
        $anchor - 从图像的哪点开始调整
            top-left
            top
            top-right
            left
            center(默认)
            right
            bottom-left
            bottom
            bottom-right
 
        $relative - 将模式设置为相对,用以在真实的图片尺寸上,添加或者减去给定的宽、高。
 
        $bgcolor - 画布背景(默认 '#000000')
 
    7.trim([$base [, array $away [, $tolerance [, $feather]]]])
        以给定颜色修剪图像空间。
 
        $base - 定义从什么位置来选取修剪颜色的点。例如:设置为  'bottom-right',图像上的所有颜色将被修剪掉,等同于图片左下角的颜色。可选的值有:
            top-left(默认)
            bottom-right
            tranparent
 
        $away - 应该被修剪掉的边框。你可以添加多个边框(array),可选的值有:
            top
            bottom
            left
            right
 
        $tolerance - 定义一个偏差度,修剪相似颜色值。范围0-100。默认是0
 
        $feather - 羽化效果
            有时,在修剪时在对象周围留下未触摸的“边框”可能是有用的。 特别是修剪非实体背景时,您可以展开(正值)或收缩(负值)修剪对象周围的空间一定量的像素。
 
        示例:
            Image::make('public/foo.jpg')->trim();        // 默认,所有边框使用 'top-left' 颜色
            Image::make('public/foo.jpg')->trim('bottom-right');        // 所有边框使用 'bottom-right' 颜色
            Image::make('public/foo.jpg')->trim('transparent', array('top', 'bottom'));        // 上、下边框透明
            Image::make('public/foo.jpg')->trim('top-left', 'left');        // 只有左边框,使用 'top-left' 颜色
            Image::make('public/foo.jpg')->trim('top-left', null, 40);        // 移除图像所有边框+40偏差度
            Image::make('public/foo.jpg')->trim('top-left', null, 25, 50);        // 移除图像所有边框+25偏差度+50px的边框羽化效果
 
 
调整图像:
    1.gamma($correction) - 伽马矫正
 
        对当前图像执行伽马矫正操作
        $correction - 伽马补偿值(gamma compensation value)
 
        示例:
            $img = Image::make('public/foo.jpg');
            $img->gamma(1.6);
 
    2.brightness($level) - 亮度
 
        改变当前图像的亮度。$level可选范围为:-100 - 100。0-表示不改变,-100最小,+100最大。
 
        示例:
            $img = Image::make('public/foo.jpg');
            $img->brightness(35);
 
    3.constrast($level) - 对比度
 
        改变图像的对比度。$level可选范围为:-100 - 100。0-表示不改变,-100最小,+100最大。
 
        示例:
            $img = Image::make('public/foo.jpg');
            $img->constrast(35);
 
    4.colorize($red, $green, $blue) - 改变RGB色道
 
        使用给定的红、绿、蓝色道,改变当前图像的RGB颜色。色道值是规范化的,范围从 -100 - 100。0-表示不改变,-100表示移除图像上的所有特定颜色,+100表示最大颜色
 
        示例:
            $img = Image::make('public/foo.jpg');
            $img->colorize(-100, 0, 100);    // 添加蓝,移除红
            $img->colorize(0, 30, 0);        // 给图片添加部分蓝色调
 
    5.greyscale() - 灰度
 
        将图像转换为灰度版本
 
        示例:
            $img = Image::make('public/foo.jpg');
            $image = $img->greyscale();
 
    6.flip($mode) - 图像镜像
 
        给当前图像,制作镜像。$mode可以指定为:h-水平镜像和v-垂直镜像。默认是h
 
        示例:
            $img = Image::make('public/foo.jpg');
            $img->flip('v');
 
    7.invert() - 反转图像颜色
 
        反转当前图像的所有颜色
 
        示例:
            $img = Image::make('public/foo.jpg')->invert();
 
    8.opacity($transparency) - 设置图像的透明度
 
        设置当前图像的不透明度的百分比。从 100%-0%,100%-不透明|0%-全透明
 
        示例:
            Image::make('public/foo.jpg')->opacity(50);
            Image::make('public/foo.jpg')->opacity(0);
 
    9.orientate() - 旋转图像(记得摩点图像处理,使用了它。Imagick)
 
        此方法读取EXIF图像配置项 '方向',并对图像执行旋转,以正确显示图像。必须从文件路径实例化图像,才能正确读取EXIF数据
        注意:
            使用该方法,要求PHP编译时,必须指定 '--enable-exif'。windows用户,还必须启用 'mbstring' 扩展
 
        示例:
            $img = Image::make('public/foo.jpg')->orientate();
 
    10.rotate(float $angle [, string $bgcolor]) - 图像旋转
 
        将当前图像,逆时针旋转给定角度。可定义旋转后,未覆盖区域的背景颜色!
        $angle - 旋转角度
        $bgcolor - 旋转后,可能出现未覆盖区域,我们可设置背景色
 
    11.mask($source [, bool $mask_with_alpha = false])
        将给定的图像资源应用为当前图像的alpha蒙板,以改变当前透明度。蒙板将调整为当前图像大小。默认情况下,蒙板的灰度版本会转换为alpha值,但可通过设置 $mask_with_alpha 以应用世纪的alpha通道。将保持当前图像的透明度。
        $source:
            string - 文件系统的图片路径
            string - 图片的URL地址(allow_url_fopen必须启用)
            string - 二进制图片数据
            string - data-url编码的图片数据
            string - base64编码的图片数据
            resource - gd类型的PHP资源(当使用GD库)
            object - Imagick实例(当使用Imagick库)
            object - Intervention\Image\Image 实例
            object - SplFileInfo instance (To handle Laravel file uploads via Symfony\Component\HttpFoundation\File\UploadedFile) - laravel框架自带的图片上传实例
        $mask_with_alpha - 设置为true,可将实际的alpha通道作为蒙板,应用于当前图像,替代颜色值。默认是 false
 
应用效果:    
    1.filter(Intervention\Image\Filters\FilterInterface $filter) - 使用滤镜
 
        给当前图像,应用自定义的滤镜效果
 
    2.blur($amount = 1) - 高斯模糊
 
        在当前图片上,应用高斯模糊滤镜。$amount可选范围为 0-100。(GD库处理,高强度的高斯模糊会非常占用性能,小心使用)
 
        示例:
            $img = Image::make('public/foo.jpg');
            $img->blur();        // 轻微的高斯模糊
            $img->blur(15);        // 高强度的高斯模糊
 
    3.sharpen($amount = 10) - 锐化效果
 
        锐化当前图像。$amount可选范围为 0-100。
 
        示例:
            $img = Image::make('public/foo.jpg');
            $img->sharpen(15);
 
    4.pixelate($size) - 像素化效果
 
        将像素化效果应用于当前图像(指定像素化效果的尺寸)
 
    5.limitColors($count [, $matte])
 
        将当前图片的现有颜色,转换为具有给定最大颜色数的颜色表。该函数保留尽可能多的alpha通道信息,并将透明像素与可选的遮罩颜色混合。
        $count - 应在调色板中保留的最大颜色数。设置为null,转为真彩色(truecolor)
        $matte - 用于混合透明像素的颜色。默认值:无遮罩颜色
 
        示例:
            $img = Image::make('public/foo.png');
            $img->limitColors(255, '#f90');
 
    6.interlace($interlace = true) - 图像隔行扫描
 
        传递一个boolean类型参数,切换隔行扫描模式,来确定是否使用隔行扫描或标准模式,对图像进行编码。如果jpeg图像使用隔行扫描模式,图像将被处理为渐进式jpeg。
        设置为true-隔行扫描模式|false-标准模式。默认是true
 
        示例:
            $img = Image::make('public/foo.png');
            $img->interlace();            // 开启隔行扫描
            $img->save();
            $img = Image::make('public/interlaced.gif');
            $img->interlace(false);        // 关闭隔行扫描
            $img->save();
 
 
画图:
    1.text($text [, $x [, $y [, Closure $callback]]]) - 文字
 
        在指定的位置,写入文本。在回调函数中,可定义更多细节,例如:字体大小,字体文件,对其方式等
        $callback - 回调函数
            file($filepath) - 字体文件。设置True Type Font文件的路径,或者GD库内部字体之一的1到5之间的整数值。 默认值:1
            size($size) - 字体大小。字体大小仅在设置字体文件时可用,否则将被忽略。 默认值:12
            color($color) - 字体颜色
            align($align) - 水平对齐方式:left,right,center。默认left
            valign($valign) - 垂直对齐方式:top,bottom,middle。默认bottom
            angle($angle) - 文本旋转角度。文本将围绕垂直和水平对齐点逆时针旋转。 旋转仅在设置字体文件时可用,否则将被忽略
 
    2.pixel($color, $x, $y) - 点
 
        在给定的坐标上,以给定的颜色画单个像素点
 
    3.line($x1, $y1, $x2, $y2 [Closure $callback]) - 线
 
        在当前图像上,指定2点画线。可以在回调函数中,定义线的颜色和宽度
        $callback
            color($color) - 指定线的颜色。默认:#000000
            width($width) - 指定线的宽度。默认:1px。            // GD库无效!!
 
    4.rectangle($x1, $y1, $x2, $y2 [Closure $callback]) - 矩形
 
        指定2点坐标,分别代表左上角和右下角,来画一个矩形。
 
    5.polygon(array $points [, Closure $callback]) - 多边形
 
        使用给定的点数据,来画一个多边形。可以在回调函数中,定义多变形的外观
        $callback 可使用下面的方法,来定义圆的外观:
            background($color) - 定义圆的背景
            border($width, $color) - 定义圆的边框
 
        示例:
            $img = Image::canvas(800, 600, '#ddd');
            $points = array(
                40, 50,
                30, 40,
                20, 30,
                10, 20,
                5, 10,
            );
            $img->polygon($points, function($draw){
                $draw->background('#ff0');
                $draw->border(1, '#f0f');
            })
 
    6.circle($diameter, $x, $y [,Closure $callback]) - 圆
 
        在给定的x、y坐标点上,使用给定的直径画一个圆。
        可以通过回调函数,来定义圆的外观。
        $callback 可使用下面的方法,来定义圆的外观:
            background($color) - 定义圆的背景
            border($width, $color) - 定义圆的边框
 
        示例:
            $img = Image::canvas(300, 200, '#ddd');
            $img->circle(100, 50, 50, function($draw){
                $draw->background('#ff0');
                $draw->border(1, '#f00');
            })
 
    7.ellipse($width = 10, $height = 10, $x, $y [Closure $callback]) - 椭圆
 
        在给定的x、y坐标点,绘制彩色椭圆。可以定义宽度和高度,以及通过可选的闭包回调来设置椭圆的外观
        $callback 可使用下面的方法,来定义圆的外观:
            background($color) - 定义圆的背景
            border($width, $color) - 定义圆的边框
 
 
图像的其它处理方法:
    1.fill($filling [, $x, $y]) - 图像填充
 
        使用给定颜色或另一张图片来填充当前图像。传递可选的x、y坐标,表示开始填充的位置。
        如果指定了x、y坐标,原始图像上该坐标的颜色,将执行泛红填充(flood fill)。如果未指定坐标,不管下面是什么,填充整个图像
 
        $filling - 填充颜色或图像模式。图像资源格式如下:
            string - 文件系统的图片路径
            string - 图片的URL地址(allow_url_fopen必须启用)
            string - 二进制图片数据
            string - data-url编码的图片数据
            string - base64编码的图片数据
            resource - gd类型的PHP资源(当使用GD库)
            object - Imagick实例(当使用Imagick库)
            object - Intervention\Image\Image 实例
            object - SplFileInfo instance (To handle Laravel file uploads via Symfony\Component\HttpFoundation\File\UploadedFile) - laravel框架自带的图片上传实例
 
        示例:
            $img = Image::canvas(800, 600);
            $img->fill('#ccc');
            $img->fill('public/foo.jpg');
            $img->fill('#f0f', 0, 0);
 
    2.insert($source [, $position [, $x, $y]]) - 插入图片
 
        将一个给定的图片资源插入到当前图像中。
 
        $source - 另一个图片资源
 
        $position - 位置(相对于当前图像)
            top-left(默认)
            top
            top-right
            left
            center
            right
            bottom-left
            bottom
            bottom-right
 
        $x,$y - 偏移坐标(默认:0.0)
            在 $position 指定的位置上,再进行相对偏移
 
        此方法可用于,将另一张图像作为水印,因为保持了透明度。
 
        示例:
            $img = Image::make('public/foo.jpg');
            $img->insert('public/bar.png');                                    // 插入另一个图片
            $watermark = Image::make('public/watermark.png');                // 创建一个新的图片实例
            $img->insert($watermark, 'center');                                // 插入图片
            $img->insert('public/watermark.png', 'bottom-right', 10, 10);
 
    3.pickColor($x, $y [string $format]) - 选取给定坐标颜色
 
        在当前图像上的指定坐标,获取颜色,并返回给定的颜色格式
        $format - 颜色格式,可以是:
            array - array(255, 255, 255, 1)
            rgb - rgb(255, 255, 255)
            rgba - rgba(255, 255, 255, 0.5)
            hex - #cccccc
            int - 16776956
        默认情况下,该方法将像素的RGB值作为数组返回。使用整数格式,将颜色直接传递给任意GD库函数
 
检索信息:
    1.width()
        获取当前图片的宽度(单位:px)
 
        示例:
            $width = Image::make('public/foo.jpg')->width();
 
    2.height()
        获取当前图片的高度(单位:px)
 
        示例:
            $height = Image::make('public/foo.jpg')->height();
 
    3.mime()
        如果已经图像已经定义了MIME类型,从当前图像实例中读取MIME类型。
 
    4.exif([string $key])
        从当前图像读取 'Exif' 元数据。必须从文件路径是实例化图像对象,才能正确读取EXIF数据
        imagick从2.3.9开始支持exif。PHP编译时,必须包含 '--enable-exif' 才能使用这个方法。windows用户,还必须开启 'mbstring' 扩展(PHP手册有该函数库)
        $key - 检索的exif哪个下标
 
    5.iptc([string $key])
        从当前图像中读取 'IPTC' 元数据
        默认获取所有元数据,可以传递下标,来获取指定的元数据。没有发现元数据,返回 'NULL'
 
        示例:
            $data = Image::make('public/foo.jpg')->iptc();                        // 获取所有数据
 
            $copyright = Image::make('public/foo.jpg')->iptc('Copyright');        // 获取 'Copyright'
 
    6.filezise()
        如果实例是从一个真实文件初始化的,获取当前图像实例的文件尺寸
        返回图像的尺寸大小,单位是 'bytes - 字节',如果不是从一个文件创建的图像实例,则返回false
 
        示例:
            $img = Image::make('public/foo.jpg');
            $size = $img->filesize();

laravel 做图片的缩略图 踩坑的更多相关文章

  1. 记一次IE浏览器做图片预览的坑

    随便写写吧,被坑死了 IE 10 及 IE10以上,可以使用FileReader的方式,来做图片预览,加载本地图片显示 IE 9 8 7 没有FileReader这个对象,所以只能使用微软自己的东西来 ...

  2. 前端nginx+Java后台ftp处理页面图片上传踩坑

    今天,将前端代码部署到服务器nginx上,在测试多图片上传时,报错413请求体空间太大,请求都没到后台,直接被nginx拦截,调整后又报错504. 整体而言,前端存在两处问题: 413 错误 :Req ...

  3. electron踩坑系列之一

    前言 以electron作为基础框架,已经开发两个项目了.第一个项目,我主要负责用react写页面,第二项目既负责electron部分+UI部分. 做项目,就是踩坑, 一路做项目,一路踩坑,坑多不可怕 ...

  4. ios UIWebView加载HTMLStr图文,关于图片宽高设置,webView内容实际高度的踩坑问题

    一.关于UIWebView 与 WKWebView 选取问题 从发布时间看: 2008年7月11日,在新一代iPhone3G正式发售当天,iPhone OS 2.0(iOS 2.0)推出,这时候就有U ...

  5. Android 图片裁剪踩坑

      今天做图库图片的裁剪遇到了不少坑,今天记录一下,以下坑位供各位看官参考: 如果有不对之处,欢迎各位看官留言评论! 图片裁剪踩坑锦囊: 问题一:相册裁剪权限问题 解:这个简单,对于Android6. ...

  6. java用毫秒数做日期计算的一个踩坑记录

    错误示例: Date today = new Date(); Date nextMonth = new Date(today.getTime() + 30* 1000*60*60*24); print ...

  7. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  8. Java 开发中如何正确踩坑

    为什么说一个好的员工能顶 100 个普通员工 我们的做法是,要用最好的人.我一直都认为研发本身是很有创造性的,如果人不放松,或不够聪明,都很难做得好.你要找到最好的人,一个好的工程师不是顶10个,是顶 ...

  9. AI相关 TensorFlow -卷积神经网络 踩坑日记之一

    上次写完粗浅的BP算法 介绍 本来应该继续把 卷积神经网络算法写一下的 但是最近一直在踩 TensorFlow的坑.所以就先跳过算法介绍直接来应用场景,原谅我吧. TensorFlow 介绍 TF是g ...

随机推荐

  1. 团队项目:"Jarvis For Chat"

    "Jarvis For Chat"项目简介 项目详情信息已经在上一篇博客中详细给出,详请查看博客 团队成员 姓名 学号 张扬(队长) 031602345 苏韫月 031602631 ...

  2. redis的String类型以及其操作

    Redis的数据类型 String类型以及操作 String是最简单的数据类型,一个key对应一个Value,String类型是二进制安全的.Redis的String可以包含任何数据,比如jpg图片或 ...

  3. SpringInAction--自动化装配(显示装配之 java注解配置)

    Spring在配置时候有三种方案可选 1.在xml中进行显示配置 2.在java中进行显示配置 3.隐式的Bean发现机制和自动装配 今天学习的 第二种—— 在java中进行显示配置 场景: 尽管在很 ...

  4. volatile关键字解析(一)

    引起线程并发问题,可以简单的总结为以下三条: 原子性问题 可见性问题 有序性问题(重排序问题) 原子性问题 什么是原子性? 原子性,即一个操作或者多个操作,要么全部执行并且执行过程中不会被任何因素打断 ...

  5. L163

    Chickens slaughtered in the United States, claim officials in Brussels, are not fit to grace Europea ...

  6. reactNative 的一些学习

    手把手视频 学习资料大全 入门系列

  7. c# 实体处理工具类

    using System; using System.Collections; using System.Collections.Generic; using System.ComponentMode ...

  8. Getting command line access to PHP and MySQL running MAMP on OSX

    建立自己profile路径应该在/Users/yourname/,最后要运行. ./.profile使文件生效,和windows中给添加环境变量是一个道理,还可以看出linux和UNIX默认运行路径为 ...

  9. 简单说说什么是Restful

    在确定要把自己的服务创建成RESTFUL之前,要明白什么样的服务什么是RESTFUL service(https://en.wikipedia.org/wiki/Representational_st ...

  10. Linux libusb 安装及简单使用

    Linux libusb 安装及简单使用 一.参考文档: . libusb1 fails do_configure task with “udev support requested but libu ...