1. 程式人生 > >laravel 的 intervention-image 圖像處理筆記

laravel 的 intervention-image 圖像處理筆記

就是 names 世紀 MF format span 配置 更多 繪制

    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();

laravel 的 intervention-image 圖像處理筆記