laravel 的 intervention-image 图像处理笔记
  1. 安装:
  2. https://blog.csdn.net/beyond__devil/article/details/62230610
  3. 需求:
  4. PHP >= 5.4
  5. Fileinfo 扩展
  6. GD库 >= 2.0
  7. Imagick 扩展 >=6.5.7
  8. composer安装:
  9. composer require intervention/image
  10. laravel配置:
  11. 1.编辑 config/app.php
  12. $providers 添加 'Intervention\Image\ImageServiceProvider::class'
  13. $aliases 添加 ''Image' => Intervention\Image\Facades\Image::class'
  14. 2.默认使用的是 'GD' 库,想修改的话,需要配置驱动,我们来生成配置文件:
  15. php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"
  16. 生成 config/image.php 配置文件
  17. 3.PHP涉及到的配置项:
  18. memory_limit - 最大内存限制
  19. upload_max_filesize - 如果上传图片时,可能修改
  20. -----
  21. 其实,可能还有好多
  22. max_execution_time - 最大执行时间
  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. HTTP响应:
  34. 1.将图像直接返回到用户浏览器的最简单的方法是输出response()方法。 它将根据当前图像自动发送HTTP头,并输出编码的图像数据。
  35. $img = Image::canvas(800, 600, '#ff0000');
  36. echo $img->response('jpg', 70);
  37. 2.手动发送HTTP响应
  38. $img = Image::canvas(800, 600, '#ff0000');
  39. header('Content-Type: image/png');
  40. echo $img->encode('png');
  41. 在laravel中,同上面的2种方法一样:
  42. 3.
  43. $img = Image::canvas(800, 600, '#ff0000');
  44. return $img->response();
  45. 4.
  46. $img = Image::canvas(800, 600, '#ff0000');
  47. $response = Response::make($img->encode('png'));
  48. $response->header('Content-Type', 'image/png');
  49. return $response;
  50. 图片上传:
  51. 1.直接从 $_FILES 中,获取 'tmp' 临时图片数据
  52. $img = Image::make($_FILES['image']['tmp_name']);       // Image::make() 支持这种方式
  53. $img->fit(300, 200);
  54. $img->save('public/bar.jpg');
  55. 2.在laravel中处理图片上传
  56. Image::make(Input::file('photo'));                      // Input::file() 来获取$_FILES
  57. 图片过滤器:
  58. 图片过滤器,给了我们非常有用的方式,将多个图像转换命令集合在一个专用类中。(可将多个图像处理步骤,封装成一个过滤器)。
  59. Intervention/image,提供了基本接口(Intervention\Image\Filters\FilterInterface),所有的过滤器都需要实现它。
  60. 调用过滤器:
  61. $img = Image::make('foo.jpg');
  62. $img->filter(new DemoFilter(5));
  63. 定义过滤器:
  64. src/Intervention/Image/Filters/DemoFilter.php
  65. <?php
  66. namespace Intervention\Image\Filters;
  67. class DemoFilter implements FilterInterface
  68. {
  69. /**
  70. * Default size of filter effects
  71. */
  72. const DEFAULT_SIZE = 10;
  73. /**
  74. * Size of filter effects
  75. *
  76. * @var integer
  77. */
  78. private $size;
  79. /**
  80. * Creates new instance of filter
  81. *
  82. * @param integer $size
  83. */
  84. public function __construct($size = null)
  85. {
  86. $this->size = is_numeric($size) ? intval($size) : self::DEFAULT_SIZE;
  87. }
  88. /**
  89. * Applies filter effects to given image
  90. *
  91. * @param  Intervention\Image\Image $image
  92. * @return Intervention\Image\Image
  93. */
  94. public function applyFilter(\Intervention\Image\Image $image)
  95. {
  96. $image->pixelate($this->size);
  97. $image->greyscale();
  98. return $image;
  99. }
  100. }
  101. ?>
  102. 图像缓存:
  103. 图像缓存包,扩展了缓存图像的能力。
  104. 缓存包使用laravel的 'Illuminate/Cache' 包。基于laravel的缓存配置,可以使用 '文件系统'、'数据库'、'Memcached'或'Redis' 来作为临时缓冲存储
  105. 原理很简单。一旦安装了缓存包,就可以调用静态缓存方法。每个对 Intervention/Image 类的方法调用,都会被缓存接口捕获和检查。如果这个特定的操作序列意境生成过,将直接从缓存中获取数据,而不是重新执行一遍资源密集型的GD操作
  106. 安装:
  107. composer require intervention/imagecache
  108. 使用方式:
  109. $img = Image::cache(function($image){
  110. $image->make('public/foo.jpg')->resize(300, 200)->greyscale();
  111. });
  112. 基于URL的图像操作:
  113. 在Laravel应用程序中,可以使用URL来动态操作图像。 URL图像的操作版本将存储在缓存中,并且将直接加载而无需资源密集型GD操作。
  114. 图像必须上传一次。当通过HTTP请求方式访问文件,所有操作(例如:调整大小、裁剪)将稍后处理,例如:
  115. http://yourhost.com/{route-name}/{template-name}/{file-name}
  116. 1.安装:
  117. composer require intervention/image
  118. composer require intervention/imagecache
  119. 2.生成配置文件
  120. php artisan vendor:publish
  121. 生成 config/imagecache.php
  122. 3.启用操作
  123. 默认情况下,基于URL的图像操作是关闭的。在imagecache.php配置文件中,来指定 'route' 配置项
  124. 'route' => 'imagecache'
  125. 配置好route后,可以通过artisan命令,列出所有已注册的路有,并检查新路有是否正确列出:
  126. php artisan route:list
  127. 4.定义资源目录
  128. 告诉PHP,在哪里搜索图片。我们可以定义自己喜欢的任意数量的目录。例如:定义应用程序的所有上传目录。应用程序将在目录中搜索在路有中提交的文件。
  129. 'paths' => array(
  130. 'storage/uploads/images',
  131. public_path('img'),
  132. ),
  133. 在这些目录中保存具有唯一文件名的图像文件是有意义的。否则,包将返回首先找到的图像。
  134. 注意:
  135. 出于安全原因,路由仅接受由以下字符组成的文件名:
  136. a-zA-Z0-9-_/.
  137. 5.模板
  138. 模板的定义,就是过滤器类的名称,可以在其中定义任意操作命令(之前介绍过过滤器)。系统自带3个基本模板:
  139. small - 120x90
  140. medium - 240x180
  141. large - 480x360
  142. 我们可以在配置文件中,自由配置可用的模板:
  143. 'templates' => array(
  144. 'small' => 'Intervention\Image\Templates\Small',
  145. 'medium' => 'Intervention\Image\Templates\Medium',
  146. 'large' => 'Intervention\Image\Templates\Large',
  147. ),
  148. 访问原始图片:
  149. original - 使用原始图像文件,发送HTTP响应
  150. download - 发送HTTP响应并强制浏览器下载原始图像文件,而不是显示它。
  151. 例如:
  152. http://yourhost.com/{route-name}/original/{file-name}
  153. 6.图像缓存的生命周期:
  154. 一旦第一次访问了URL,搜索图片,并根据模板,编辑图像,并存储到缓存中。 所以下次访问URL时,所有的GD操作都被绕过,文件将直接来自缓存
  155. 'lifetime' => 43200,     // 单位是 'minutes-分钟'
  156. 支持的格式:
  157. 图片格式:
  158. GD库:jpeg, png, gif
  159. Imagick库:jpeg, png, gif, tif, bmp, ico, psd
  160. 颜色格式:
  161. 整数
  162. $color = Image::make('public/foo.jpg')->pickColor(10, 10);   // pickColor()返回的是整数形式的RGB值
  163. $img->fill($color);
  164. 数组
  165. $img->fill(array(255, 0, 0));
  166. $img->fill(array(255, 0, 0, 0.5));
  167. 16进制
  168. $img->fill('#000000');
  169. RGB和RGBA字符串格式
  170. $img->fill('rgb(255, 0, 0)');
  171. $img->fill('rgb(255, 0, 0, 0.5)');
  172. 创建图像:
  173. 1.canvas($width, $height [, mixed $bgcolor]) - 创建一个空的画布
  174. 构造方法,使用给定的宽、高,创建一个新的空的图像实例。可以选择性的定义一个背景色。默认画布背景是透明(transparent)的。
  175. 示例:
  176. $img = Image::canvas(800, 600);
  177. $img = Image::canvas(32, 32, '#ff0000');
  178. 2.make($source) - 从给定的资料中读取图像
  179. 从资源中创建新的图像实例的通用工厂方法。该方法高度可变,可读取下面列出的所有输入类型:
  180. string - 文件系统的图片路径
  181. string - 图片的URL地址(allow_url_fopen必须启用)
  182. string - 二进制图片数据
  183. string - data-url编码的图片数据
  184. string - base64编码的图片数据
  185. resource - gd类型的PHP资源(当使用GD库)
  186. object - Imagick实例(当使用Imagick库)
  187. object - Intervention\Image\Image 实例
  188. object - SplFileInfo instance (To handle Laravel file uploads via Symfony\Component\HttpFoundation\File\UploadedFile) - laravel框架自带的图片上传实例
  189. 销毁图像:
  190. 1.destroy() - 销毁图像
  191. 在PHP脚本结束前,释放当前图像实例相关的内存。通常资源会在脚本结束后,自动释放。
  192. 当然,该方法调用后,图像实例不再可用。
  193. 示例:
  194. $img = Image::make('public/foo.jpg');
  195. $img->resize(320, 240);
  196. $img->save('public/small.jpg');
  197. $img->destroy();
  198. 图像输出:
  199. 1.response([string $format [, integer $quality]]) - 直接作为HTTP响应
  200. 以指定的格式和图像质量,来发送当前图像,作为HTTP响应
  201. $format - 可以是:jpg,png,gif,tif,bmp。默认是jpeg
  202. $quality - 从0-100.默认是90
  203. 2.save([string $path [, int $quality]]) - 保存图像到指定路径(未指定,则表示覆盖原图)
  204. 将图像对象的当前状态保存到文件系统中。可指定路径和图像质量。
  205. 保存到图像类型通过文件后缀来定义。例如:foo.jpg 图片将被保存为 'JPG' 格式。如果未指定可用后缀,首先尝试图像的MIME类型,如果失败,将被编码为 'JPEG'
  206. 此外,图像将始终以RGB颜色模式保存,而没有嵌入的颜色配置文件。
  207. $path - 指定图像数据写入的文件路径。如果图像是从一个存在的文件路径创建的,同时我们未指定 $path,将会尝试覆盖该路径。
  208. 示例:
  209. $img = Image::make('public/foo.jpg')->resize(300, 200);
  210. $img->save('public/bar.png', 60);
  211. $img->save('public/bar.jpg');
  212. 3.stream([mixed $format [, int $quality]]) - 图像流
  213. 以给定格式和给定图像质量,对当前图像进行编码,并基于图像数据,创建新的PSR-7流。
  214. 4.encode([$format [, $quality]]) - 图像进行编码
  215. 将当前图片,按给定的格式和图片质量进行编码
  216. $format - jpg、png、gif、tif、bmp、data-url(base64)。默认返回的编码后的数据。默认类型是 'jpeg'
  217. $quality - 返回从 0-100。0-最低,100最大。只对 'jpg' 编码格式有效,因为png压缩是无损的,不会影响图片质量。默认是90
  218. 示例:
  219. $jpg = (string) Image::make('public/foo.png')->encode('jpg', 75);
  220. $data = (string) Image::make('public/foo.png')->encode('data-url');
  221. 图像缓存相关
  222. 1.cache(Closure $callback [, int $lifetime [,bool $returnObj]]) - 图像缓存
  223. $callback - 从Closure回调,创建新的缓存图像实例。
  224. $lifetime - 为回调传递一个生命周期
  225. $returnObj - 获取一个Intervention图像实例作为返回值,还是直接接收图像流。
  226. cache()方法,需要安装额外的 'intervention/imagecache' 依赖包
  227. 示例:
  228. $img = Image::cache(function($image){
  229. $image->make('public/foo.jpg')->resize(300, 200)->greyscale();
  230. }, 10, true);
  231. 2.backup($name = 'default') - 图像状态备份
  232. 备份当前图片的状态。将图片的当前状态备份到 $name。之后,可以调用 reset($name = 'default') 来进行状态恢复。
  233. $name默认是'default'。我们可以传递不同的$name,来记录图片处理过程中的多个状态
  234. 示例:
  235. $img = Image::canvas(120, 90, '#000');
  236. $img->fill('#f00');
  237. $img->backup();
  238. $img->fill('#0f0');
  239. $img->reset();
  240. 3.reset($name = 'default') - 图像状态恢复
  241. backup()用于备份图像状态,reset()用于恢复到之前的某个备份
  242. 原生图像处理驱动调用:
  243. 1.getCore() - GD库|Imagick库 对象调用
  244. 以特定驱动的核心格式,返回当前图像。如果使用的是 'GD' 库,则返回 GD 资源类型;如果使用的是 'Imagick',则返回一个 Imagick 对象。
  245. 示例:
  246. $img = Image::make('public/foo.jpg');
  247. $imagick = $img->getCore();          // 返回原始的 'imagick' 对象
  248. $imagick->embossImage(0, 1);     // 就可以调用 'imagick' 的方法了
  249. 调整图像尺寸:
  250. 1.resize($width, $height [,Closure $callback]) - 调整图像尺寸
  251. 使用给定的宽、高,来调整当前图像。传递一个可选的Closure回调来约束resize命令。
  252. 回调函数,定义了resize命令的约束。可约束图像的 '宽高比(aspect-ratio)' 和 '不希望的大小(a unwanted upsizing)'
  253. aspectRatio()
  254. 约束当前图像的宽高比。作为比例调整大小的快捷方式,可以使用 widen() 和 heighten()
  255. upsize()
  256. 保持图像大小
  257. 示例:
  258. $img = Image::make('public/foo.jpg');
  259. $img->resize(300, 200);
  260. $img->resize(300, null);
  261. $img->resize(null, 200);
  262. $img->resize(300, null, function($constraint){       // 调整图像的宽到300,并约束宽高比(高自动)
  263. $constraint->aspectRatio();
  264. });
  265. $img->resize(null, 200, function($constraint){       // 调整图像的高到200,并约束宽高比(宽自动)
  266. $constraint->aspectRatio();
  267. });
  268. $img->resize(null, 400, function($constraint){       // 阻止可能的尺寸变化(保持图像大小)
  269. $constraint->aspectRatio();
  270. $constraint->upsize();
  271. });
  272. 2.widen($width [, Closure $callback]) - 调整图像宽(保持宽高比)
  273. 调整图像的宽到给定的宽度,保持宽高比。传递一个可选的回调函数,来应用额外的约束,例如:阻止可能的尺寸变化
  274. upsize()
  275. 保持图像大小
  276. 3.heighten($height [, Closure $callback]) - 调整图像高(保持宽高比)
  277. 调整图像的高到给定的高度,保持宽高比。传递一个可选的回调函数,来应用额外的约束,例如:阻止可能的尺寸变化
  278. upsize()
  279. 保持图像大小
  280. 4.crop($width, $height [, $x, $y]) - 裁剪图像
  281. 使用给定的宽、高,裁剪当前图像的一个矩形区域。默认从图像的0.0开始,可传递一个坐标,定位裁剪的起始点。
  282. 示例:
  283. $img = Image::make('public/foo.jpg');
  284. $img->crop(100, 100, 20, 20);
  285. 5.fit($width [[$height] [, Closure $callback [, $position]]]) - 智能裁剪和调整
  286. 以一个智能的方式,结合裁剪和调整来格式化图片。该方法将会自动找到给定的宽、高的最佳宽高比,裁剪并调整到给定尺寸。
  287. $callback - 回调函数,来约束可能的尺寸变化
  288. upsize()
  289. 保持图像大小
  290. $position - 自定义裁剪的位置。默认是 '中心'
  291. top-left
  292. top
  293. top-right
  294. left
  295. center(默认)
  296. right
  297. bottom-left
  298. bottom
  299. bottom-right
  300. 6.resizeCanvas($width, $height [, $anchor [, bool $relative [, $bgcolor]]])
  301. 调整当前图像的边界到给定的宽和高。
  302. $anchor - 从图像的哪点开始调整
  303. top-left
  304. top
  305. top-right
  306. left
  307. center(默认)
  308. right
  309. bottom-left
  310. bottom
  311. bottom-right
  312. $relative - 将模式设置为相对,用以在真实的图片尺寸上,添加或者减去给定的宽、高。
  313. $bgcolor - 画布背景(默认 '#000000')
  314. 7.trim([$base [, array $away [, $tolerance [, $feather]]]])
  315. 以给定颜色修剪图像空间。
  316. $base - 定义从什么位置来选取修剪颜色的点。例如:设置为  'bottom-right',图像上的所有颜色将被修剪掉,等同于图片左下角的颜色。可选的值有:
  317. top-left(默认)
  318. bottom-right
  319. tranparent
  320. $away - 应该被修剪掉的边框。你可以添加多个边框(array),可选的值有:
  321. top
  322. bottom
  323. left
  324. right
  325. $tolerance - 定义一个偏差度,修剪相似颜色值。范围0-100。默认是0
  326. $feather - 羽化效果
  327. 有时,在修剪时在对象周围留下未触摸的“边框”可能是有用的。 特别是修剪非实体背景时,您可以展开(正值)或收缩(负值)修剪对象周围的空间一定量的像素。
  328. 示例:
  329. Image::make('public/foo.jpg')->trim();       // 默认,所有边框使用 'top-left' 颜色
  330. Image::make('public/foo.jpg')->trim('bottom-right');     // 所有边框使用 'bottom-right' 颜色
  331. Image::make('public/foo.jpg')->trim('transparent', array('top', 'bottom'));      // 上、下边框透明
  332. Image::make('public/foo.jpg')->trim('top-left', 'left');     // 只有左边框,使用 'top-left' 颜色
  333. Image::make('public/foo.jpg')->trim('top-left', null, 40);       // 移除图像所有边框+40偏差度
  334. Image::make('public/foo.jpg')->trim('top-left', null, 25, 50);       // 移除图像所有边框+25偏差度+50px的边框羽化效果
  335. 调整图像:
  336. 1.gamma($correction) - 伽马矫正
  337. 对当前图像执行伽马矫正操作
  338. $correction - 伽马补偿值(gamma compensation value)
  339. 示例:
  340. $img = Image::make('public/foo.jpg');
  341. $img->gamma(1.6);
  342. 2.brightness($level) - 亮度
  343. 改变当前图像的亮度。$level可选范围为:-100 - 100。0-表示不改变,-100最小,+100最大。
  344. 示例:
  345. $img = Image::make('public/foo.jpg');
  346. $img->brightness(35);
  347. 3.constrast($level) - 对比度
  348. 改变图像的对比度。$level可选范围为:-100 - 100。0-表示不改变,-100最小,+100最大。
  349. 示例:
  350. $img = Image::make('public/foo.jpg');
  351. $img->constrast(35);
  352. 4.colorize($red, $green, $blue) - 改变RGB色道
  353. 使用给定的红、绿、蓝色道,改变当前图像的RGB颜色。色道值是规范化的,范围从 -100 - 100。0-表示不改变,-100表示移除图像上的所有特定颜色,+100表示最大颜色
  354. 示例:
  355. $img = Image::make('public/foo.jpg');
  356. $img->colorize(-100, 0, 100);    // 添加蓝,移除红
  357. $img->colorize(0, 30, 0);        // 给图片添加部分蓝色调
  358. 5.greyscale() - 灰度
  359. 将图像转换为灰度版本
  360. 示例:
  361. $img = Image::make('public/foo.jpg');
  362. $image = $img->greyscale();
  363. 6.flip($mode) - 图像镜像
  364. 给当前图像,制作镜像。$mode可以指定为:h-水平镜像和v-垂直镜像。默认是h
  365. 示例:
  366. $img = Image::make('public/foo.jpg');
  367. $img->flip('v');
  368. 7.invert() - 反转图像颜色
  369. 反转当前图像的所有颜色
  370. 示例:
  371. $img = Image::make('public/foo.jpg')->invert();
  372. 8.opacity($transparency) - 设置图像的透明度
  373. 设置当前图像的不透明度的百分比。从 100%-0%,100%-不透明|0%-全透明
  374. 示例:
  375. Image::make('public/foo.jpg')->opacity(50);
  376. Image::make('public/foo.jpg')->opacity(0);
  377. 9.orientate() - 旋转图像(记得摩点图像处理,使用了它。Imagick)
  378. 此方法读取EXIF图像配置项 '方向',并对图像执行旋转,以正确显示图像。必须从文件路径实例化图像,才能正确读取EXIF数据
  379. 注意:
  380. 使用该方法,要求PHP编译时,必须指定 '--enable-exif'。windows用户,还必须启用 'mbstring' 扩展
  381. 示例:
  382. $img = Image::make('public/foo.jpg')->orientate();
  383. 10.rotate(float $angle [, string $bgcolor]) - 图像旋转
  384. 将当前图像,逆时针旋转给定角度。可定义旋转后,未覆盖区域的背景颜色!
  385. $angle - 旋转角度
  386. $bgcolor - 旋转后,可能出现未覆盖区域,我们可设置背景色
  387. 11.mask($source [, bool $mask_with_alpha = false])
  388. 将给定的图像资源应用为当前图像的alpha蒙板,以改变当前透明度。蒙板将调整为当前图像大小。默认情况下,蒙板的灰度版本会转换为alpha值,但可通过设置 $mask_with_alpha 以应用世纪的alpha通道。将保持当前图像的透明度。
  389. $source:
  390. string - 文件系统的图片路径
  391. string - 图片的URL地址(allow_url_fopen必须启用)
  392. string - 二进制图片数据
  393. string - data-url编码的图片数据
  394. string - base64编码的图片数据
  395. resource - gd类型的PHP资源(当使用GD库)
  396. object - Imagick实例(当使用Imagick库)
  397. object - Intervention\Image\Image 实例
  398. object - SplFileInfo instance (To handle Laravel file uploads via Symfony\Component\HttpFoundation\File\UploadedFile) - laravel框架自带的图片上传实例
  399. $mask_with_alpha - 设置为true,可将实际的alpha通道作为蒙板,应用于当前图像,替代颜色值。默认是 false
  400. 应用效果:
  401. 1.filter(Intervention\Image\Filters\FilterInterface $filter) - 使用滤镜
  402. 给当前图像,应用自定义的滤镜效果
  403. 2.blur($amount = 1) - 高斯模糊
  404. 在当前图片上,应用高斯模糊滤镜。$amount可选范围为 0-100。(GD库处理,高强度的高斯模糊会非常占用性能,小心使用)
  405. 示例:
  406. $img = Image::make('public/foo.jpg');
  407. $img->blur();        // 轻微的高斯模糊
  408. $img->blur(15);      // 高强度的高斯模糊
  409. 3.sharpen($amount = 10) - 锐化效果
  410. 锐化当前图像。$amount可选范围为 0-100。
  411. 示例:
  412. $img = Image::make('public/foo.jpg');
  413. $img->sharpen(15);
  414. 4.pixelate($size) - 像素化效果
  415. 将像素化效果应用于当前图像(指定像素化效果的尺寸)
  416. 5.limitColors($count [, $matte])
  417. 将当前图片的现有颜色,转换为具有给定最大颜色数的颜色表。该函数保留尽可能多的alpha通道信息,并将透明像素与可选的遮罩颜色混合。
  418. $count - 应在调色板中保留的最大颜色数。设置为null,转为真彩色(truecolor)
  419. $matte - 用于混合透明像素的颜色。默认值:无遮罩颜色
  420. 示例:
  421. $img = Image::make('public/foo.png');
  422. $img->limitColors(255, '#f90');
  423. 6.interlace($interlace = true) - 图像隔行扫描
  424. 传递一个boolean类型参数,切换隔行扫描模式,来确定是否使用隔行扫描或标准模式,对图像进行编码。如果jpeg图像使用隔行扫描模式,图像将被处理为渐进式jpeg。
  425. 设置为true-隔行扫描模式|false-标准模式。默认是true
  426. 示例:
  427. $img = Image::make('public/foo.png');
  428. $img->interlace();           // 开启隔行扫描
  429. $img->save();
  430. $img = Image::make('public/interlaced.gif');
  431. $img->interlace(false);      // 关闭隔行扫描
  432. $img->save();
  433. 画图:
  434. 1.text($text [, $x [, $y [, Closure $callback]]]) - 文字
  435. 在指定的位置,写入文本。在回调函数中,可定义更多细节,例如:字体大小,字体文件,对其方式等
  436. $callback - 回调函数
  437. file($filepath) - 字体文件。设置True Type Font文件的路径,或者GD库内部字体之一的1到5之间的整数值。 默认值:1
  438. size($size) - 字体大小。字体大小仅在设置字体文件时可用,否则将被忽略。 默认值:12
  439. color($color) - 字体颜色
  440. align($align) - 水平对齐方式:left,right,center。默认left
  441. valign($valign) - 垂直对齐方式:top,bottom,middle。默认bottom
  442. angle($angle) - 文本旋转角度。文本将围绕垂直和水平对齐点逆时针旋转。 旋转仅在设置字体文件时可用,否则将被忽略
  443. 2.pixel($color, $x, $y) - 点
  444. 在给定的坐标上,以给定的颜色画单个像素点
  445. 3.line($x1, $y1, $x2, $y2 [Closure $callback]) - 线
  446. 在当前图像上,指定2点画线。可以在回调函数中,定义线的颜色和宽度
  447. $callback
  448. color($color) - 指定线的颜色。默认:#000000
  449. width($width) - 指定线的宽度。默认:1px。          // GD库无效!!
  450. 4.rectangle($x1, $y1, $x2, $y2 [Closure $callback]) - 矩形
  451. 指定2点坐标,分别代表左上角和右下角,来画一个矩形。
  452. 5.polygon(array $points [, Closure $callback]) - 多边形
  453. 使用给定的点数据,来画一个多边形。可以在回调函数中,定义多变形的外观
  454. $callback 可使用下面的方法,来定义圆的外观:
  455. background($color) - 定义圆的背景
  456. border($width, $color) - 定义圆的边框
  457. 示例:
  458. $img = Image::canvas(800, 600, '#ddd');
  459. $points = array(
  460. 40, 50,
  461. 30, 40,
  462. 20, 30,
  463. 10, 20,
  464. 5, 10,
  465. );
  466. $img->polygon($points, function($draw){
  467. $draw->background('#ff0');
  468. $draw->border(1, '#f0f');
  469. })
  470. 6.circle($diameter, $x, $y [,Closure $callback]) - 圆
  471. 在给定的x、y坐标点上,使用给定的直径画一个圆。
  472. 可以通过回调函数,来定义圆的外观。
  473. $callback 可使用下面的方法,来定义圆的外观:
  474. background($color) - 定义圆的背景
  475. border($width, $color) - 定义圆的边框
  476. 示例:
  477. $img = Image::canvas(300, 200, '#ddd');
  478. $img->circle(100, 50, 50, function($draw){
  479. $draw->background('#ff0');
  480. $draw->border(1, '#f00');
  481. })
  482. 7.ellipse($width = 10, $height = 10, $x, $y [Closure $callback]) - 椭圆
  483. 在给定的x、y坐标点,绘制彩色椭圆。可以定义宽度和高度,以及通过可选的闭包回调来设置椭圆的外观
  484. $callback 可使用下面的方法,来定义圆的外观:
  485. background($color) - 定义圆的背景
  486. border($width, $color) - 定义圆的边框
  487. 图像的其它处理方法:
  488. 1.fill($filling [, $x, $y]) - 图像填充
  489. 使用给定颜色或另一张图片来填充当前图像。传递可选的x、y坐标,表示开始填充的位置。
  490. 如果指定了x、y坐标,原始图像上该坐标的颜色,将执行泛红填充(flood fill)。如果未指定坐标,不管下面是什么,填充整个图像
  491. $filling - 填充颜色或图像模式。图像资源格式如下:
  492. string - 文件系统的图片路径
  493. string - 图片的URL地址(allow_url_fopen必须启用)
  494. string - 二进制图片数据
  495. string - data-url编码的图片数据
  496. string - base64编码的图片数据
  497. resource - gd类型的PHP资源(当使用GD库)
  498. object - Imagick实例(当使用Imagick库)
  499. object - Intervention\Image\Image 实例
  500. object - SplFileInfo instance (To handle Laravel file uploads via Symfony\Component\HttpFoundation\File\UploadedFile) - laravel框架自带的图片上传实例
  501. 示例:
  502. $img = Image::canvas(800, 600);
  503. $img->fill('#ccc');
  504. $img->fill('public/foo.jpg');
  505. $img->fill('#f0f', 0, 0);
  506. 2.insert($source [, $position [, $x, $y]]) - 插入图片
  507. 将一个给定的图片资源插入到当前图像中。
  508. $source - 另一个图片资源
  509. $position - 位置(相对于当前图像)
  510. top-left(默认)
  511. top
  512. top-right
  513. left
  514. center
  515. right
  516. bottom-left
  517. bottom
  518. bottom-right
  519. $x,$y - 偏移坐标(默认:0.0)
  520. 在 $position 指定的位置上,再进行相对偏移
  521. 此方法可用于,将另一张图像作为水印,因为保持了透明度。
  522. 示例:
  523. $img = Image::make('public/foo.jpg');
  524. $img->insert('public/bar.png');                                  // 插入另一个图片
  525. $watermark = Image::make('public/watermark.png');               // 创建一个新的图片实例
  526. $img->insert($watermark, 'center');                              // 插入图片
  527. $img->insert('public/watermark.png', 'bottom-right', 10, 10);
  528. 3.pickColor($x, $y [string $format]) - 选取给定坐标颜色
  529. 在当前图像上的指定坐标,获取颜色,并返回给定的颜色格式
  530. $format - 颜色格式,可以是:
  531. array - array(255, 255, 255, 1)
  532. rgb - rgb(255, 255, 255)
  533. rgba - rgba(255, 255, 255, 0.5)
  534. hex - #cccccc
  535. int - 16776956
  536. 默认情况下,该方法将像素的RGB值作为数组返回。使用整数格式,将颜色直接传递给任意GD库函数
  537. 检索信息:
  538. 1.width()
  539. 获取当前图片的宽度(单位:px)
  540. 示例:
  541. $width = Image::make('public/foo.jpg')->width();
  542. 2.height()
  543. 获取当前图片的高度(单位:px)
  544. 示例:
  545. $height = Image::make('public/foo.jpg')->height();
  546. 3.mime()
  547. 如果已经图像已经定义了MIME类型,从当前图像实例中读取MIME类型。
  548. 4.exif([string $key])
  549. 从当前图像读取 'Exif' 元数据。必须从文件路径是实例化图像对象,才能正确读取EXIF数据
  550. imagick从2.3.9开始支持exif。PHP编译时,必须包含 '--enable-exif' 才能使用这个方法。windows用户,还必须开启 'mbstring' 扩展(PHP手册有该函数库)
  551. $key - 检索的exif哪个下标
  552. 5.iptc([string $key])
  553. 从当前图像中读取 'IPTC' 元数据
  554. 默认获取所有元数据,可以传递下标,来获取指定的元数据。没有发现元数据,返回 'NULL'
  555. 示例:
  556. $data = Image::make('public/foo.jpg')->iptc();                       // 获取所有数据
  557. $copyright = Image::make('public/foo.jpg')->iptc('Copyright');       // 获取 'Copyright'
  558. 6.filezise()
  559. 如果实例是从一个真实文件初始化的,获取当前图像实例的文件尺寸
  560. 返回图像的尺寸大小,单位是 'bytes - 字节',如果不是从一个文件创建的图像实例,则返回false
  561. 示例:
  562. $img = Image::make('public/foo.jpg');
  563. $size = $img->filesize();
posted on 2018-05-23 15:39 jason&li 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/ldms/p/9077225.html

laravel 的 intervention-image 图像处理笔记相关推荐

  1. 【matlab图像处理笔记5】【图像变换】(四)图像的正交变换

    文章目录 推荐阅读 前言 图像正交变换简介 离散傅里叶变换 对图像进行离散傅里叶变换的作用 二维离散傅里叶变换 频谱图 示例 离散余弦变换 简介 基本原理 示例 推荐阅读 本系列其他文章 [matla ...

  2. 数字图像处理笔记(一)——图像存储空间,分辨率,图像内插

    数字图像处理笔记(一)--图像存储空间,分辨率,图像内插 本系列笔记是笔者在学习冈萨雷斯<数字图像处理>第三版时做的总结,日后看的时候方便点,如果有幸得到大家的讨论,喜上眉梢. 本节参考书 ...

  3. 【matlab图像处理笔记4】【图像变换】(三)图像的霍夫变换

    文章目录 推荐阅读 前言 霍夫变换概述 霍夫变换直线检测原理 从笛卡尔坐标系到霍夫空间 两点一线的霍夫空间形式 寻找共线的点 直角坐标系存在的问题 极坐标参数空间下的霍夫变换 matlab霍夫变换直线 ...

  4. 数字图像处理笔记2-nbsp;边沿检…

    原文地址:数字图像处理笔记2- 边沿检测与提取,轮廓跟踪(转)作者:小草帽 7.1 边沿检测 我们给出一个模板 和一幅图象 .不难发现原图中左边暗,右边亮,中间存在着一条明显的边界.进行模板操作后的结 ...

  5. python图像处理笔记-十二-图像聚类

    python图像处理笔记-十二-图像聚类 学习内容 这一章主要在学习的是聚类算法以及其在图像算法中的应用,主要学习的聚类方法有: KMeans 层次聚类 谱聚类 并将使用他们对字母数据及进行聚类处理, ...

  6. 数字图像处理笔记-02(图像空域增强技术及联合运用)

    数字图像处理笔记-02(图像空域增强技术及联合运用) (一) 图像增强 1.1 基本概念 由于图像在传输或者处理过程中会引入噪声或使图像变模糊,从而降低了图像质量,甚至淹没了特 征,给分析带来了困难. ...

  7. laravel 使用 Intervention/image 进行图片处理

    laravel 使用 Intervention/image 进行图片处理 在 Laravel 5 中集成 Intervention Image 实现对图片的创建.修改和压缩处理 Interventio ...

  8. 数字图像处理笔记(一)基础内容

    基础内容 数字图像是什么,和模拟图像又有什么区别 数字图像处理 数字图像处理研究内容 数字图像处理有哪些方法 计算机图形学和数字图像处理的区别 常用的数字图像处理开发工具 数字图像 图像的数学表达 数 ...

  9. DIP数字图像处理笔记

    数字图像处理--南信大 范春年老师 期末复习笔记 matlab语法 期中考试总结 邻域 图像增强 概念 直方图的图像增强 点处理 直方图均衡化histogram equalization 意义 效果 ...

最新文章

  1. servlet里面的context,定义属性值的事情!
  2. GDB 程序调试简单实践
  3. linux shell 三种自动交互 方法
  4. FFmpeg转HTML5支持的视频格式
  5. php imagecreatefromjpeg图片太大_PHP图像处理技术及应用
  6. golang 模板 tpl 算术运算_高考数学常设的32个命题陷阱,七成同学中招失分!文末附数学疑难题(精品)模板!...
  7. [原创]HierarchyView的实现原理和Android设备无法使用HierarchyView的解决方法
  8. [总结]板子整理——第二弹
  9. c语言 16进制编辑器,十六进制编辑器(010editor)最新下载
  10. vue 文字转语音mp3_vue项目或网页上实现文字转换成语音播放功能
  11. 中国光谷·“华为杯”第十九届中国研究生数学建模竞赛LaTeX模版
  12. Unity3D:粒子特效(Particle System)播放序列帧动画
  13. python turtle库下载_python3中安装turtle库
  14. excel复制公式递增_快速向下复制Excel公式
  15. 大话设计模式之爱你一万年:第三章 创建型模式:工厂模式:我想让你坐在宝马里笑:6.工厂模式在Spring框架和JDK源码中的应用
  16. 南头中学2021年高考成绩查询,深圳新安中学和南头中学哪个好
  17. 一种基于陀螺仪传感器的准确计步器算法
  18. 无论多大年纪,请保留一份童真和幻想
  19. web渗透--ftp暴力破解,明文、嗅探安全等
  20. 2022安全员-A证考试题模拟考试题库模拟考试平台操作

热门文章

  1. 域控发放壁纸到本地客户端磁盘防止黑屏
  2. MOVEit 爆第三个 0day,美国多个联邦机构等受影响
  3. Android Settings 导入eclipse(含有调试好的源代码)
  4. 遍历容量(各态历经容量)
  5. Emqtt -- 01 -- 服务搭建
  6. windows10中文乱码
  7. css实现三角形和向右箭头
  8. OSCP考试指南——重要信息及建议
  9. iOS 各版本中的新特性(What's New in iOS)- 目录翻译完成
  10. docker安装个人云盘可道云kodbox