欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

laravel 的 intervention-image 图像处理笔记 resize 可处理水印 有大用 有大大用 有大大大用

[html] view plain copy
  1. 安装:  

  2.     需求:  

  3.         PHP >= 5.4  

  4.         Fileinfo 扩展  

  5.         GD库 >= 2.0  

  6.         Imagick 扩展 >=6.5.7  

  7.     composer安装:  

  8.         composer require intervention/image  

  9.     laravel配置:  

  10.         1.编辑 config/app.php  

  11.             $providers 添加 'Intervention\Image\ImageServiceProvider::class'  

  12.             $aliases 添加 ''Image' => Intervention\Image\Facades\Image::class'  

  13.         2.默认使用的是 'GD' 库,想修改的话,需要配置驱动,我们来生成配置文件:  

  14.             php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"  

  15.             生成 config/image.php 配置文件  

  16.         3.PHP涉及到的配置项:  

  17.             memory_limit - 最大内存限制  

  18.             upload_max_filesize - 如果上传图片时,可能修改  

  19.             -----  

  20.             其实,可能还有好多  

  21.             max_execution_time - 最大执行时间  

  22.             ...  

  23.   

  24. 基本使用:  

  25.     1.使用 Intervention\Image\ImageManager - 图片管理类  

  26.         use Intervention\Image\ImageManager;  

  27.         $manager = new ImageManager(array('driver' => 'imagick'));  

  28.         $manager->make('public/foo.jpg');  

  29.     2.使用 ImageManager 的静态版本  

  30.         use Intervention\Image\ImageManagerStatic as Image;  

  31.         Image::configure(array('driver' => 'imagick'));      ------- api中未出现此方法  

  32.         Image::make('public/foo.jpg');    

  33.       

  34. HTTP响应:  

  35.     1.将图像直接返回到用户浏览器的最简单的方法是输出response()方法。 它将根据当前图像自动发送HTTP头,并输出编码的图像数据。  

  36.         $img = Image::canvas(800, 600, '#ff0000');  

  37.         echo $img->response('jpg', 70);  

  38.     2.手动发送HTTP响应  

  39.         $img = Image::canvas(800, 600, '#ff0000');  

  40.         header('Content-Type: image/png');  

  41.         echo $img->encode('png');  

  42.   

  43.     在laravel中,同上面的2种方法一样:  

  44.   

  45.     3.  

  46.         $img = Image::canvas(800, 600, '#ff0000');  

  47.         return $img->response();  

  48.     4.  

  49.         $img = Image::canvas(800, 600, '#ff0000');  

  50.         $response = Response::make($img->encode('png'));  

  51.         $response->header('Content-Type', 'image/png');  

  52.         return $response;  

  53.       

  54. 图片上传:  

  55.     1.直接从 $_FILES 中,获取 'tmp' 临时图片数据  

  56.         $img = Image::make($_FILES['image']['tmp_name']);       // Image::make() 支持这种方式  

  57.         $img->fit(300, 200);  

  58.         $img->save('public/bar.jpg');  

  59.     2.在laravel中处理图片上传  

  60.         Image::make(Input::file('photo'));                      // Input::file() 来获取$_FILES  

  61.   

  62. 图片过滤器:  

  63.     图片过滤器,给了我们非常有用的方式,将多个图像转换命令集合在一个专用类中。(可将多个图像处理步骤,封装成一个过滤器)。  

  64.     Intervention/image,提供了基本接口(Intervention\Image\Filters\FilterInterface),所有的过滤器都需要实现它。  

  65.     调用过滤器:  

  66.         $img = Image::make('foo.jpg');  

  67.         $img->filter(new DemoFilter(5));  

  68.     定义过滤器:  

  69.         src/Intervention/Image/Filters/DemoFilter.php  

  70.         <?php  

  71.             namespace Intervention\Image\Filters;  

  72.   

  73.             class DemoFilter implements FilterInterface  

  74.             {  

  75.                 /**  

  76.                  * Default size of filter effects  

  77.                  */  

  78.                 const DEFAULT_SIZE = 10;  

  79.   

  80.                 /**  

  81.                  * Size of filter effects  

  82.                  *  

  83.                  * @var integer  

  84.                  */  

  85.                 private $size;  

  86.   

  87.                 /**  

  88.                  * Creates new instance of filter  

  89.                  *  

  90.                  * @param integer $size  

  91.                  */  

  92.                 public function __construct($size = null)  

  93.                 {  

  94.                     $this->size = is_numeric($size) ? intval($size) : self::DEFAULT_SIZE;  

  95.                 }  

  96.   

  97.                 /**  

  98.                  * Applies filter effects to given image  

  99.                  *  

  100.                  * @param  Intervention\Image\Image $image  

  101.                  * @return Intervention\Image\Image  

  102.                  */  

  103.                 public function applyFilter(\Intervention\Image\Image $image)  

  104.                 {  

  105.                     $image->pixelate($this->size);  

  106.                     $image->greyscale();  

  107.   

  108.                     return $image;  

  109.                 }  

  110.             }  

  111.         ?>  

  112.   

  113. 图像缓存:  

  114.     图像缓存包,扩展了缓存图像的能力。  

  115.   

  116.     缓存包使用laravel的 'Illuminate/Cache' 包。基于laravel的缓存配置,可以使用 '文件系统'、'数据库'、'Memcached'或'Redis' 来作为临时缓冲存储  

  117.   

  118.     原理很简单。一旦安装了缓存包,就可以调用静态缓存方法。每个对 Intervention/Image 类的方法调用,都会被缓存接口捕获和检查。如果这个特定的操作序列意境生成过,将直接从缓存中获取数据,而不是重新执行一遍资源密集型的GD操作  

  119.   

  120.     安装:  

  121.         composer require intervention/imagecache  

  122.   

  123.     使用方式:  

  124.         $img = Image::cache(function($image){  

  125.             $image->make('public/foo.jpg')->resize(300, 200)->greyscale();  

  126.         });  

  127.   

  128. 基于URL的图像操作:  

  129.     在Laravel应用程序中,可以使用URL来动态操作图像。 URL图像的操作版本将存储在缓存中,并且将直接加载而无需资源密集型GD操作。  

  130.   

  131.     图像必须上传一次。当通过HTTP请求方式访问文件,所有操作(例如:调整大小、裁剪)将稍后处理,例如:  

  132.         http://yourhost.com/{route-name}/{template-name}/{file-name}  

  133.   

  134.     1.安装:  

  135.         composer require intervention/image  

  136.         composer require intervention/imagecache  

  137.     2.生成配置文件  

  138.         php artisan vendor:publish  

  139.         生成 config/imagecache.php  

  140.     3.启用操作  

  141.         默认情况下,基于URL的图像操作是关闭的。在imagecache.php配置文件中,来指定 'route' 配置项  

  142.             'route' => 'imagecache'    

  143.         配置好route后,可以通过artisan命令,列出所有已注册的路有,并检查新路有是否正确列出:  

  144.             php artisan route:list  

  145.     4.定义资源目录  

  146.         告诉PHP,在哪里搜索图片。我们可以定义自己喜欢的任意数量的目录。例如:定义应用程序的所有上传目录。应用程序将在目录中搜索在路有中提交的文件。  

  147.             'paths' => array(  

  148.                 'storage/uploads/images',  

  149.                 public_path('img'),  

  150.             ),  

  151.         在这些目录中保存具有唯一文件名的图像文件是有意义的。否则,包将返回首先找到的图像。  

  152.         注意:   

  153.             出于安全原因,路由仅接受由以下字符组成的文件名:  

  154.                 a-zA-Z0-9-_/.  

  155.     5.模板  

  156.         模板的定义,就是过滤器类的名称,可以在其中定义任意操作命令(之前介绍过过滤器)。系统自带3个基本模板:  

  157.             small - 120x90   

  158.             medium - 240x180  

  159.             large - 480x360  

  160.         我们可以在配置文件中,自由配置可用的模板:  

  161.             'templates' => array(  

  162.                 'small' => 'Intervention\Image\Templates\Small',  

  163.                 'medium' => 'Intervention\Image\Templates\Medium',  

  164.                 'large' => 'Intervention\Image\Templates\Large',  

  165.             ),  

  166.         访问原始图片:  

  167.             original - 使用原始图像文件,发送HTTP响应  

  168.             download - 发送HTTP响应并强制浏览器下载原始图像文件,而不是显示它。  

  169.             例如:  

  170.                 http://yourhost.com/{route-name}/original/{file-name}  

  171.     6.图像缓存的生命周期:  

  172.         一旦第一次访问了URL,搜索图片,并根据模板,编辑图像,并存储到缓存中。 所以下次访问URL时,所有的GD操作都被绕过,文件将直接来自缓存  

  173.             'lifetime' => 43200,     // 单位是 'minutes-分钟'  

  174.   

  175.   

  176. 支持的格式:  

  177.     图片格式:  

  178.         GD库:jpeg, png, gif  

  179.         Imagick库:jpeg, png, gif, tif, bmp, ico, psd  

  180.     颜色格式:  

  181.         整数  

  182.             $color = Image::make('public/foo.jpg')->pickColor(10, 10);   // pickColor()返回的是整数形式的RGB值  

  183.             $img->fill($color);  

  184.         数组  

  185.             $img->fill(array(255, 0, 0));  

  186.             $img->fill(array(255, 0, 0, 0.5));  

  187.         16进制  

  188.             $img->fill('#000000');  

  189.         RGB和RGBA字符串格式  

  190.             $img->fill('rgb(255, 0, 0)');  

  191.             $img->fill('rgb(255, 0, 0, 0.5)');  

  192.   

  193. 创建图像:  

  194.     1.canvas($width, $height [, mixed $bgcolor]) - 创建一个空的画布  

  195.   

  196.         构造方法,使用给定的宽、高,创建一个新的空的图像实例。可以选择性的定义一个背景色。默认画布背景是透明(transparent)的。  

  197.   

  198.         示例:  

  199.             $img = Image::canvas(800, 600);  

  200.             $img = Image::canvas(32, 32, '#ff0000');  

  201.   

  202.     2.make($source) - 从给定的资料中读取图像  

  203.   

  204.         从资源中创建新的图像实例的通用工厂方法。该方法高度可变,可读取下面列出的所有输入类型:  

  205.             string - 文件系统的图片路径  

  206.             string - 图片的URL地址(allow_url_fopen必须启用)  

  207.             string - 二进制图片数据  

  208.             string - data-url编码的图片数据  

  209.             string - base64编码的图片数据  

  210.             resource - gd类型的PHP资源(当使用GD库)  

  211.             object - Imagick实例(当使用Imagick库)  

  212.             object - Intervention\Image\Image 实例  

  213.             object - SplFileInfo instance (To handle Laravel file uploads via Symfony\Component\HttpFoundation\File\UploadedFile) - laravel框架自带的图片上传实例  

  214.   

  215. 销毁图像:  

  216.     1.destroy() - 销毁图像  

  217.   

  218.         在PHP脚本结束前,释放当前图像实例相关的内存。通常资源会在脚本结束后,自动释放。  

  219.         当然,该方法调用后,图像实例不再可用。  

  220.   

  221.         示例:  

  222.             $img = Image::make('public/foo.jpg');  

  223.             $img->resize(320, 240);  

  224.             $img->save('public/small.jpg');  

  225.             $img->destroy();  

  226.   

  227. 图像输出:  

  228.     1.response([string $format [, integer $quality]]) - 直接作为HTTP响应  

  229.   

  230.         以指定的格式和图像质量,来发送当前图像,作为HTTP响应  

  231.         $format - 可以是:jpg,png,gif,tif,bmp。默认是jpeg  

  232.         $quality - 从0-100.默认是90  

  233.   

  234.     2.save([string $path [, int $quality]]) - 保存图像到指定路径(未指定,则表示覆盖原图)  

  235.   

  236.         将图像对象的当前状态保存到文件系统中。可指定路径和图像质量。  

  237.         保存到图像类型通过文件后缀来定义。例如:foo.jpg 图片将被保存为 'JPG' 格式。如果未指定可用后缀,首先尝试图像的MIME类型,如果失败,将被编码为 'JPEG'  

  238.         此外,图像将始终以RGB颜色模式保存,而没有嵌入的颜色配置文件。  

  239.         $path - 指定图像数据写入的文件路径。如果图像是从一个存在的文件路径创建的,同时我们未指定 $path,将会尝试覆盖该路径。  

  240.   

  241.         示例:  

  242.             $img = Image::make('public/foo.jpg')->resize(300, 200);  

  243.             $img->save('public/bar.png', 60);  

  244.             $img->save('public/bar.jpg');  

  245.   

  246.     3.stream([mixed $format [, int $quality]]) - 图像流  

  247.   

  248.         以给定格式和给定图像质量,对当前图像进行编码,并基于图像数据,创建新的PSR-7流。  

  249.   

  250.     4.encode([$format [, $quality]]) - 图像进行编码  

  251.   

  252.         将当前图片,按给定的格式和图片质量进行编码  

  253.   

  254.         $format - jpg、png、gif、tif、bmp、data-url(base64)。默认返回的编码后的数据。默认类型是 'jpeg'  

  255.         $quality - 返回从 0-100。0-最低,100最大。只对 'jpg' 编码格式有效,因为png压缩是无损的,不会影响图片质量。默认是90  

  256.   

  257.         示例:  

  258.             $jpg = (string) Image::make('public/foo.png')->encode('jpg', 75);  

  259.             $data = (string) Image::make('public/foo.png')->encode('data-url');  

  260.   

  261. 图像缓存相关  

  262.     1.cache(Closure $callback [, int $lifetime [,bool $returnObj]]) - 图像缓存  

  263.   

  264.         $callback - 从Closure回调,创建新的缓存图像实例。  

  265.         $lifetime - 为回调传递一个生命周期  

  266.         $returnObj - 获取一个Intervention图像实例作为返回值,还是直接接收图像流。  

  267.         cache()方法,需要安装额外的 'intervention/imagecache' 依赖包  

  268.   

  269.         示例:  

  270.             $img = Image::cache(function($image){  

  271.                 $image->make('public/foo.jpg')->resize(300, 200)->greyscale();  

  272.             }, 10, true);  

  273.   

  274.     2.backup($name = 'default') - 图像状态备份  

  275.   

  276.         备份当前图片的状态。将图片的当前状态备份到 $name。之后,可以调用 reset($name = 'default') 来进行状态恢复。  

  277.   

  278.         $name默认是'default'。我们可以传递不同的$name,来记录图片处理过程中的多个状态  

  279.   

  280.         示例:  

  281.             $img = Image::canvas(120, 90, '#000');  

  282.             $img->fill('#f00');  

  283.             $img->backup();  

  284.             $img->fill('#0f0');  

  285.             $img->reset();  

  286.   

  287.     3.reset($name = 'default') - 图像状态恢复  

  288.   

  289.         backup()用于备份图像状态,reset()用于恢复到之前的某个备份      

  290.   

  291. 原生图像处理驱动调用:  

  292.     1.getCore() - GD库|Imagick库 对象调用  

  293.   

  294.         以特定驱动的核心格式,返回当前图像。如果使用的是 'GD' 库,则返回 GD 资源类型;如果使用的是 'Imagick',则返回一个 Imagick 对象。  

  295.   

  296.         示例:  

  297.             $img = Image::make('public/foo.jpg');  

  298.             $imagick = $img->getCore();          // 返回原始的 'imagick' 对象  

  299.             $imagick->embossImage(0, 1);     // 就可以调用 'imagick' 的方法了  

  300.   

  301. 调整图像尺寸:  

  302.     1.resize($width, $height [,Closure $callback]) - 调整图像尺寸  

  303.   

  304.         使用给定的宽、高,来调整当前图像。传递一个可选的Closure回调来约束resize命令。  

  305.         回调函数,定义了resize命令的约束。可约束图像的 '宽高比(aspect-ratio)' 和 '不希望的大小(a unwanted upsizing)'  

  306.             aspectRatio()  

  307.                 约束当前图像的宽高比。作为比例调整大小的快捷方式,可以使用 widen() 和 heighten()  

  308.             upsize()  

  309.                 保持图像大小  

  310.   

  311.         示例:  

  312.             $img = Image::make('public/foo.jpg');  

  313.             $img->resize(300, 200);  

  314.             $img->resize(300, null);  

  315.             $img->resize(null, 200);  

  316.             $img->resize(300, null, function($constraint){       // 调整图像的宽到300,并约束宽高比(高自动)  

  317.                 $constraint->aspectRatio();  

  318.             });  

  319.             $img->resize(null, 200, function($constraint){       // 调整图像的高到200,并约束宽高比(宽自动)  

  320.                 $constraint->aspectRatio();  

  321.             });  

  322.             $img->resize(null, 400, function($constraint){       // 阻止可能的尺寸变化(保持图像大小)  

  323.                 $constraint->aspectRatio();  

  324.                 $constraint->upsize();  

  325.             });  

  326.   

  327.     2.widen($width [, Closure $callback]) - 调整图像宽(保持宽高比)  

  328.   

  329.         调整图像的宽到给定的宽度,保持宽高比。传递一个可选的回调函数,来应用额外的约束,例如:阻止可能的尺寸变化  

  330.             upsize()  

  331.                 保持图像大小  

  332.   

  333.     3.heighten($height [, Closure $callback]) - 调整图像高(保持宽高比)  

  334.   

  335.         调整图像的高到给定的高度,保持宽高比。传递一个可选的回调函数,来应用额外的约束,例如:阻止可能的尺寸变化  

  336.             upsize()  

  337.                 保持图像大小  

  338.   

  339.     4.crop($width, $height [, $x, $y]) - 裁剪图像  

  340.   

  341.         使用给定的宽、高,裁剪当前图像的一个矩形区域。默认从图像的0.0开始,可传递一个坐标,定位裁剪的起始点。  

  342.   

  343.         示例:   

  344.             $img = Image::make('public/foo.jpg');  

  345.             $img->crop(100, 100, 20, 20);  

  346.   

  347.     5.fit($width [[$height] [, Closure $callback [, $position]]]) - 智能裁剪和调整  

  348.   

  349.         以一个智能的方式,结合裁剪和调整来格式化图片。该方法将会自动找到给定的宽、高的最佳宽高比,裁剪并调整到给定尺寸。  

  350.         $callback - 回调函数,来约束可能的尺寸变化  

  351.             upsize()  

  352.                 保持图像大小  

  353.   

  354.         $position - 自定义裁剪的位置。默认是 '中心'  

  355.             top-left  

  356.             top  

  357.             top-right  

  358.             left  

  359.             center(默认)  

  360.             right  

  361.             bottom-left  

  362.             bottom  

  363.             bottom-right  

  364.   

  365.     6.resizeCanvas($width, $height [, $anchor [, bool $relative [, $bgcolor]]])  

  366.   

  367.         调整当前图像的边界到给定的宽和高。  

  368.   

  369.         $anchor - 从图像的哪点开始调整  

  370.             top-left  

  371.             top  

  372.             top-right  

  373.             left  

  374.             center(默认)  

  375.             right  

  376.             bottom-left  

  377.             bottom  

  378.             bottom-right  

  379.   

  380.         $relative - 将模式设置为相对,用以在真实的图片尺寸上,添加或者减去给定的宽、高。  

  381.   

  382.         $bgcolor - 画布背景(默认 '#000000')  

  383.   

  384.     7.trim([$base [, array $away [, $tolerance [, $feather]]]])  

  385.         以给定颜色修剪图像空间。  

  386.   

  387.         $base - 定义从什么位置来选取修剪颜色的点。例如:设置为  'bottom-right',图像上的所有颜色将被修剪掉,等同于图片左下角的颜色。可选的值有:  

  388.             top-left(默认)  

  389.             bottom-right  

  390.             tranparent  

  391.   

  392.         $away - 应该被修剪掉的边框。你可以添加多个边框(array),可选的值有:  

  393.             top  

  394.             bottom  

  395.             left  

  396.             right  

  397.   

  398.         $tolerance - 定义一个偏差度,修剪相似颜色值。范围0-100。默认是0  

  399.   

  400.         $feather - 羽化效果  

  401.             有时,在修剪时在对象周围留下未触摸的“边框”可能是有用的。 特别是修剪非实体背景时,您可以展开(正值)或收缩(负值)修剪对象周围的空间一定量的像素。  

  402.   

  403.         示例:  

  404.             Image::make('public/foo.jpg')->trim();       // 默认,所有边框使用 'top-left' 颜色  

  405.             Image::make('public/foo.jpg')->trim('bottom-right');     // 所有边框使用 'bottom-right' 颜色  

  406.             Image::make('public/foo.jpg')->trim('transparent', array('top', 'bottom'));      // 上、下边框透明  

  407.             Image::make('public/foo.jpg')->trim('top-left', 'left');     // 只有左边框,使用 'top-left' 颜色  

  408.             Image::make('public/foo.jpg')->trim('top-left', null, 40);       // 移除图像所有边框+40偏差度  

  409.             Image::make('public/foo.jpg')->trim('top-left', null, 25, 50);       // 移除图像所有边框+25偏差度+50px的边框羽化效果  

  410.   

  411.   

  412. 调整图像:  

  413.     1.gamma($correction) - 伽马矫正  

  414.   

  415.         对当前图像执行伽马矫正操作  

  416.         $correction - 伽马补偿值(gamma compensation value)  

  417.   

  418.         示例:  

  419.             $img = Image::make('public/foo.jpg');  

  420.             $img->gamma(1.6);  

  421.   

  422.     2.brightness($level) - 亮度  

  423.   

  424.         改变当前图像的亮度。$level可选范围为:-100 - 100。0-表示不改变,-100最小,+100最大。  

  425.   

  426.         示例:  

  427.             $img = Image::make('public/foo.jpg');  

  428.             $img->brightness(35);  

  429.   

  430.     3.constrast($level) - 对比度  

  431.   

  432.         改变图像的对比度。$level可选范围为:-100 - 100。0-表示不改变,-100最小,+100最大。  

  433.   

  434.         示例:  

  435.             $img = Image::make('public/foo.jpg');  

  436.             $img->constrast(35);  

  437.   

  438.     4.colorize($red, $green, $blue) - 改变RGB色道  

  439.   

  440.         使用给定的红、绿、蓝色道,改变当前图像的RGB颜色。色道值是规范化的,范围从 -100 - 100。0-表示不改变,-100表示移除图像上的所有特定颜色,+100表示最大颜色  

  441.   

  442.         示例:  

  443.             $img = Image::make('public/foo.jpg');  

  444.             $img->colorize(-100, 0, 100);    // 添加蓝,移除红  

  445.             $img->colorize(0, 30, 0);        // 给图片添加部分蓝色调  

  446.   

  447.     5.greyscale() - 灰度  

  448.   

  449.         将图像转换为灰度版本  

  450.   

  451.         示例:  

  452.             $img = Image::make('public/foo.jpg');  

  453.             $image = $img->greyscale();  

  454.   

  455.     6.flip($mode) - 图像镜像  

  456.   

  457.         给当前图像,制作镜像。$mode可以指定为:h-水平镜像和v-垂直镜像。默认是h  

  458.   

  459.         示例:  

  460.             $img = Image::make('public/foo.jpg');  

  461.             $img->flip('v');  

  462.   

  463.     7.invert() - 反转图像颜色  

  464.   

  465.         反转当前图像的所有颜色  

  466.   

  467.         示例:  

  468.             $img = Image::make('public/foo.jpg')->invert();  

  469.   

  470.     8.opacity($transparency) - 设置图像的透明度  

  471.   

  472.         设置当前图像的不透明度的百分比。从 100%-0%,100%-不透明|0%-全透明  

  473.   

  474.         示例:  

  475.             Image::make('public/foo.jpg')->opacity(50);  

  476.             Image::make('public/foo.jpg')->opacity(0);  

  477.   

  478.     9.orientate() - 旋转图像(记得摩点图像处理,使用了它。Imagick)  

  479.   

  480.         此方法读取EXIF图像配置项 '方向',并对图像执行旋转,以正确显示图像。必须从文件路径实例化图像,才能正确读取EXIF数据  

  481.         注意:  

  482.             使用该方法,要求PHP编译时,必须指定 '--enable-exif'。windows用户,还必须启用 'mbstring' 扩展  

  483.   

  484.         示例:  

  485.             $img = Image::make('public/foo.jpg')->orientate();  

  486.   

  487.     10.rotate(float $angle [, string $bgcolor]) - 图像旋转  

  488.   

  489.         将当前图像,逆时针旋转给定角度。可定义旋转后,未覆盖区域的背景颜色!  

  490.         $angle - 旋转角度  

  491.         $bgcolor - 旋转后,可能出现未覆盖区域,我们可设置背景色  

  492.   

  493.     11.mask($source [, bool $mask_with_alpha = false])  

  494.         将给定的图像资源应用为当前图像的alpha蒙板,以改变当前透明度。蒙板将调整为当前图像大小。默认情况下,蒙板的灰度版本会转换为alpha值,但可通过设置 $mask_with_alpha 以应用世纪的alpha通道。将保持当前图像的透明度。  

  495.         $source:  

  496.             string - 文件系统的图片路径  

  497.             string - 图片的URL地址(allow_url_fopen必须启用)  

  498.             string - 二进制图片数据  

  499.             string - data-url编码的图片数据  

  500.             string - base64编码的图片数据  

  501.             resource - gd类型的PHP资源(当使用GD库)  

  502.             object - Imagick实例(当使用Imagick库)  

  503.             object - Intervention\Image\Image 实例  

  504.             object - SplFileInfo instance (To handle Laravel file uploads via Symfony\Component\HttpFoundation\File\UploadedFile) - laravel框架自带的图片上传实例  

  505.         $mask_with_alpha - 设置为true,可将实际的alpha通道作为蒙板,应用于当前图像,替代颜色值。默认是 false  

  506.   

  507. 应用效果:     

  508.     1.filter(Intervention\Image\Filters\FilterInterface $filter) - 使用滤镜  

  509.   

  510.         给当前图像,应用自定义的滤镜效果  

  511.   

  512.     2.blur($amount = 1) - 高斯模糊  

  513.   

  514.         在当前图片上,应用高斯模糊滤镜。$amount可选范围为 0-100。(GD库处理,高强度的高斯模糊会非常占用性能,小心使用)  

  515.   

  516.         示例:  

  517.             $img = Image::make('public/foo.jpg');  

  518.             $img->blur();        // 轻微的高斯模糊  

  519.             $img->blur(15);      // 高强度的高斯模糊  

  520.   

  521.     3.sharpen($amount = 10) - 锐化效果  

  522.   

  523.         锐化当前图像。$amount可选范围为 0-100。  

  524.   

  525.         示例:  

  526.             $img = Image::make('public/foo.jpg');  

  527.             $img->sharpen(15);  

  528.   

  529.     4.pixelate($size) - 像素化效果  

  530.   

  531.         将像素化效果应用于当前图像(指定像素化效果的尺寸)  

  532.   

  533.     5.limitColors($count [, $matte])  

  534.   

  535.         将当前图片的现有颜色,转换为具有给定最大颜色数的颜色表。该函数保留尽可能多的alpha通道信息,并将透明像素与可选的遮罩颜色混合。  

  536.         $count - 应在调色板中保留的最大颜色数。设置为null,转为真彩色(truecolor)  

  537.         $matte - 用于混合透明像素的颜色。默认值:无遮罩颜色  

  538.   

  539.         示例:  

  540.             $img = Image::make('public/foo.png');  

  541.             $img->limitColors(255, '#f90');  

  542.   

  543.     6.interlace($interlace = true) - 图像隔行扫描  

  544.   

  545.         传递一个boolean类型参数,切换隔行扫描模式,来确定是否使用隔行扫描或标准模式,对图像进行编码。如果jpeg图像使用隔行扫描模式,图像将被处理为渐进式jpeg。  

  546.         设置为true-隔行扫描模式|false-标准模式。默认是true  

  547.   

  548.         示例:  

  549.             $img = Image::make('public/foo.png');  

  550.             $img->interlace();           // 开启隔行扫描  

  551.             $img->save();  

  552.             $img = Image::make('public/interlaced.gif');  

  553.             $img->interlace(false);      // 关闭隔行扫描  

  554.             $img->save();  

  555.   

  556.   

  557. 画图:  

  558.     1.text($text [, $x [, $y [, Closure $callback]]]) - 文字  

  559.   

  560.         在指定的位置,写入文本。在回调函数中,可定义更多细节,例如:字体大小,字体文件,对其方式等  

  561.         $callback - 回调函数  

  562.             file($filepath) - 字体文件。设置True Type Font文件的路径,或者GD库内部字体之一的1到5之间的整数值。 默认值:1  

  563.             size($size) - 字体大小。字体大小仅在设置字体文件时可用,否则将被忽略。 默认值:12  

  564.             color($color) - 字体颜色  

  565.             align($align) - 水平对齐方式:left,right,center。默认left  

  566.             valign($valign) - 垂直对齐方式:top,bottom,middle。默认bottom  

  567.             angle($angle) - 文本旋转角度。文本将围绕垂直和水平对齐点逆时针旋转。 旋转仅在设置字体文件时可用,否则将被忽略  

  568.   

  569.     2.pixel($color, $x, $y) - 点  

  570.   

  571.         在给定的坐标上,以给定的颜色画单个像素点  

  572.   

  573.     3.line($x1, $y1, $x2, $y2 [Closure $callback]) - 线  

  574.   

  575.         在当前图像上,指定2点画线。可以在回调函数中,定义线的颜色和宽度  

  576.         $callback  

  577.             color($color) - 指定线的颜色。默认:#000000  

  578.             width($width) - 指定线的宽度。默认:1px。          // GD库无效!!  

  579.   

  580.     4.rectangle($x1, $y1, $x2, $y2 [Closure $callback]) - 矩形  

  581.   

  582.         指定2点坐标,分别代表左上角和右下角,来画一个矩形。  

  583.   

  584.     5.polygon(array $points [, Closure $callback]) - 多边形  

  585.   

  586.         使用给定的点数据,来画一个多边形。可以在回调函数中,定义多变形的外观  

  587.         $callback 可使用下面的方法,来定义圆的外观:  

  588.             background($color) - 定义圆的背景  

  589.             border($width, $color) - 定义圆的边框  

  590.   

  591.         示例:  

  592.             $img = Image::canvas(800, 600, '#ddd');  

  593.             $points = array(  

  594.                 40, 50,  

  595.                 30, 40,  

  596.                 20, 30,  

  597.                 10, 20,  

  598.                 5, 10,  

  599.             );  

  600.             $img->polygon($points, function($draw){  

  601.                 $draw->background('#ff0');  

  602.                 $draw->border(1, '#f0f');  

  603.             })  

  604.   

  605.     6.circle($diameter, $x, $y [,Closure $callback]) - 圆  

  606.   

  607.         在给定的x、y坐标点上,使用给定的直径画一个圆。  

  608.         可以通过回调函数,来定义圆的外观。  

  609.         $callback 可使用下面的方法,来定义圆的外观:  

  610.             background($color) - 定义圆的背景  

  611.             border($width, $color) - 定义圆的边框  

  612.   

  613.         示例:  

  614.             $img = Image::canvas(300, 200, '#ddd');  

  615.             $img->circle(100, 50, 50, function($draw){  

  616.                 $draw->background('#ff0');  

  617.                 $draw->border(1, '#f00');  

  618.             })  

  619.   

  620.     7.ellipse($width = 10, $height = 10, $x, $y [Closure $callback]) - 椭圆  

  621.   

  622.         在给定的x、y坐标点,绘制彩色椭圆。可以定义宽度和高度,以及通过可选的闭包回调来设置椭圆的外观  

  623.         $callback 可使用下面的方法,来定义圆的外观:  

  624.             background($color) - 定义圆的背景  

  625.             border($width, $color) - 定义圆的边框  

  626.   

  627.   

  628. 图像的其它处理方法:  

  629.     1.fill($filling [, $x, $y]) - 图像填充  

  630.   

  631.         使用给定颜色或另一张图片来填充当前图像。传递可选的x、y坐标,表示开始填充的位置。  

  632.         如果指定了x、y坐标,原始图像上该坐标的颜色,将执行泛红填充(flood fill)。如果未指定坐标,不管下面是什么,填充整个图像  

  633.   

  634.         $filling - 填充颜色或图像模式。图像资源格式如下:  

  635.             string - 文件系统的图片路径  

  636.             string - 图片的URL地址(allow_url_fopen必须启用)  

  637.             string - 二进制图片数据  

  638.             string - data-url编码的图片数据  

  639.             string - base64编码的图片数据  

  640.             resource - gd类型的PHP资源(当使用GD库)  

  641.             object - Imagick实例(当使用Imagick库)  

  642.             object - Intervention\Image\Image 实例  

  643.             object - SplFileInfo instance (To handle Laravel file uploads via Symfony\Component\HttpFoundation\File\UploadedFile) - laravel框架自带的图片上传实例  

  644.   

  645.         示例:  

  646.             $img = Image::canvas(800, 600);  

  647.             $img->fill('#ccc');  

  648.             $img->fill('public/foo.jpg');  

  649.             $img->fill('#f0f', 0, 0);  

  650.   

  651.     2.insert($source [, $position [, $x, $y]]) - 插入图片  

  652.   

  653.         将一个给定的图片资源插入到当前图像中。  

  654.   

  655.         $source - 另一个图片资源  

  656.   

  657.         $position - 位置(相对于当前图像)  

  658.             top-left(默认)  

  659.             top  

  660.             top-right  

  661.             left  

  662.             center  

  663.             right  

  664.             bottom-left  

  665.             bottom  

  666.             bottom-right  

  667.   

  668.         $x,$y - 偏移坐标(默认:0.0)  

  669.             在 $position 指定的位置上,再进行相对偏移  

  670.   

  671.         此方法可用于,将另一张图像作为水印,因为保持了透明度。  

  672.   

  673.         示例:  

  674.             $img = Image::make('public/foo.jpg');  

  675.             $img->insert('public/bar.png');                                  // 插入另一个图片  

  676.             $watermark = Image::make('public/watermark.png');               // 创建一个新的图片实例  

  677.             $img->insert($watermark, 'center');                              // 插入图片  

  678.             $img->insert('public/watermark.png', 'bottom-right', 10, 10);  

  679.   

  680.     3.pickColor($x, $y [string $format]) - 选取给定坐标颜色  

  681.   

  682.         在当前图像上的指定坐标,获取颜色,并返回给定的颜色格式  

  683.         $format - 颜色格式,可以是:  

  684.             array - array(255, 255, 255, 1)  

  685.             rgb - rgb(255, 255, 255)  

  686.             rgba - rgba(255, 255, 255, 0.5)  

  687.             hex - #cccccc  

  688.             int - 16776956  

  689.         默认情况下,该方法将像素的RGB值作为数组返回。使用整数格式,将颜色直接传递给任意GD库函数  

  690.   

  691. 检索信息:  

  692.     1.width()  

  693.         获取当前图片的宽度(单位:px)  

  694.   

  695.         示例:  

  696.             $width = Image::make('public/foo.jpg')->width();  

  697.   

  698.     2.height()  

  699.         获取当前图片的高度(单位:px)  

  700.   

  701.         示例:  

  702.             $height = Image::make('public/foo.jpg')->height();  

  703.   

  704.     3.mime()  

  705.         如果已经图像已经定义了MIME类型,从当前图像实例中读取MIME类型。  

  706.   

  707.     4.exif([string $key])  

  708.         从当前图像读取 'Exif' 元数据。必须从文件路径是实例化图像对象,才能正确读取EXIF数据  

  709.         imagick从2.3.9开始支持exif。PHP编译时,必须包含 '--enable-exif' 才能使用这个方法。windows用户,还必须开启 'mbstring' 扩展(PHP手册有该函数库)  

  710.         $key - 检索的exif哪个下标  

  711.   

  712.     5.iptc([string $key])  

  713.         从当前图像中读取 'IPTC' 元数据  

  714.         默认获取所有元数据,可以传递下标,来获取指定的元数据。没有发现元数据,返回 'NULL'  

  715.   

  716.         示例:  

  717.             $data = Image::make('public/foo.jpg')->iptc();                       // 获取所有数据  

  718.   

  719.             $copyright = Image::make('public/foo.jpg')->iptc('Copyright');       // 获取 'Copyright'  

  720.   

  721.     6.filezise()  

  722.         如果实例是从一个真实文件初始化的,获取当前图像实例的文件尺寸  

  723.         返回图像的尺寸大小,单位是 'bytes - 字节',如果不是从一个文件创建的图像实例,则返回false  

  724.   

  725.         示例:  

  726.             $img = Image::make('public/foo.jpg');  

  727.             $size = $img->filesize();  

来自 http://blog.csdn.net/beyond__devil/article/details/62230610



有空的时候可以看看下面两个区别

// Resized image

$img->resize(500, 500, function ($constraint) {

    $constraint->aspectRatio();

});

// Canvas image

$canvas = Image::canvas(500, 500);

$canvas->insert($img, 'center');

$canvas->save();




// Resized image

$img->resize(500, 500, function ($constraint) {

    $constraint->aspectRatio();

    $constraint->upsize();


});

// Canvas image

$canvas = Image::canvas(500, 500);

$canvas->insert($img, 'center');

$canvas->save();




普通分类: