<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 圖像處理 我們繼續前面的文件上傳部分,并調用圖像擴展類庫對上傳的圖像文件進行相關的處理和保存。 - - [安裝擴展](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u5B89u88C5u6269u5C55) - [示例代碼](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u793Au4F8Bu4EE3u7801) - [控制器定義](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u63A7u5236u5668u5B9Au4E49) - [模板定義](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u6A21u677Fu5B9Au4E49) - [示例演示](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u793Au4F8Bu6F14u793A) - [讀取圖片](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u8BFBu53D6u56FEu7247) - [圖片裁剪](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u56FEu7247u88C1u526A) - [生成縮略圖](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u751Fu6210u7F29u7565u56FE) - [圖像翻轉](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u56FEu50CFu7FFBu8F6C) - [圖片旋轉](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u56FEu7247u65CBu8F6C) - [添加水印](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u6DFBu52A0u6C34u5370) - [文字水印](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u6587u5B57u6C34u5370) - [圖片保存](http://www.hmoore.net/thinkphp/thinkphp5_quickstart/179623#u56FEu7247u4FDDu5B58) ## 安裝擴展 首先使用`Composer`安裝`ThinkPHP5`的圖像處理類庫: ``` <pre class="calibre18"> ``` composer <span class="hljs-keyword">require</span> topthink/think-image ``` ``` ## 示例代碼 本示例使用下面的示例代碼進行圖片上傳和處理。 ### 控制器定義 然后修改之前創建的`Upload`控制器,添加`picture`方法如下: ``` <pre class="calibre18"> ``` <span class="hljs-operator"><span class="hljs-number"><?php</span><span class="hljs-keyword">namespace</span> <span class="hljs-title">app</span>\<span class="hljs-title">index</span>\<span class="hljs-title">controller</span>; <span class="hljs-keyword">use</span> <span class="hljs-title">think</span>\<span class="hljs-title">Image</span>; <span class="hljs-keyword">use</span> <span class="hljs-title">think</span>\<span class="hljs-title">Request</span>; <span class="hljs-operator"><span class="hljs-keyword">class</span> <span class="hljs-title">Upload</span> <span class="hljs-keyword">extends</span> \<span class="hljs-title">think</span>\<span class="hljs-title">Controller</span></span>{ <span class="hljs-comment">// 文件上傳表單</span><span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">index</span><span class="hljs-number">()</span></span>{ <span class="hljs-keyword">return</span> <span class="hljs-regexp">$this</span>->fetch(); } <span class="hljs-comment">// 圖片上傳處理</span><span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">picture</span><span class="hljs-number">(Request <span class="hljs-regexp">$request</span>)</span></span>{ <span class="hljs-comment">// 獲取表單上傳文件</span><span class="hljs-regexp">$file</span> = <span class="hljs-regexp">$request</span>->file(<span class="hljs-string">'image'</span>); <span class="hljs-keyword">if</span> (<span class="hljs-keyword">true</span> !== <span class="hljs-regexp">$this</span>->validate([<span class="hljs-string">'image'</span> => <span class="hljs-regexp">$file</span>], [<span class="hljs-string">'image'</span> => <span class="hljs-string">'require|image'</span>])) { <span class="hljs-regexp">$this</span>->error(<span class="hljs-string">'請選擇圖像文件'</span>); } <span class="hljs-keyword">else</span> { <span class="hljs-comment">// 讀取圖片</span><span class="hljs-regexp">$image</span> = Image::open(<span class="hljs-regexp">$file</span>); <span class="hljs-comment">// 圖片處理</span><span class="hljs-keyword">switch</span> (<span class="hljs-regexp">$request</span>->param(<span class="hljs-string">'type'</span>)) { <span class="hljs-keyword">case</span> <span class="hljs-number">1</span>: <span class="hljs-comment">// 圖片裁剪</span><span class="hljs-regexp">$image</span>->crop(<span class="hljs-number">300</span>, <span class="hljs-number">300</span>); <span class="hljs-keyword">break</span>; <span class="hljs-keyword">case</span> <span class="hljs-number">2</span>: <span class="hljs-comment">// 縮略圖</span><span class="hljs-regexp">$image</span>->thumb(<span class="hljs-number">150</span>, <span class="hljs-number">150</span>, Image::THUMB_CENTER); <span class="hljs-keyword">break</span>; <span class="hljs-keyword">case</span> <span class="hljs-number">3</span>: <span class="hljs-comment">// 垂直翻轉</span><span class="hljs-regexp">$image</span>->flip(); <span class="hljs-keyword">break</span>; <span class="hljs-keyword">case</span> <span class="hljs-number">4</span>: <span class="hljs-comment">// 水平翻轉</span><span class="hljs-regexp">$image</span>->flip(Image::FLIP_Y); <span class="hljs-keyword">break</span>; <span class="hljs-keyword">case</span> <span class="hljs-number">5</span>: <span class="hljs-comment">// 圖片旋轉</span><span class="hljs-regexp">$image</span>->rotate(); <span class="hljs-keyword">break</span>; <span class="hljs-keyword">case</span> <span class="hljs-number">6</span>: <span class="hljs-comment">// 圖片水印</span><span class="hljs-regexp">$image</span>->water(<span class="hljs-string">'./logo.png'</span>, Image::WATER_NORTHWEST, <span class="hljs-number">50</span>); <span class="hljs-keyword">break</span>; <span class="hljs-keyword">case</span> <span class="hljs-number">7</span>: <span class="hljs-comment">// 文字水印</span><span class="hljs-regexp">$image</span>->text(<span class="hljs-string">'ThinkPHP'</span>, VENDOR_PATH . <span class="hljs-string">'topthink/think-captcha/assets/ttfs/1.ttf'</span>, <span class="hljs-number">20</span>, <span class="hljs-string">'#ffffff'</span>); <span class="hljs-keyword">break</span>; } <span class="hljs-comment">// 保存圖片(以當前時間戳)</span><span class="hljs-regexp">$saveName</span> = <span class="hljs-regexp">$request</span>->time() . <span class="hljs-string">'.png'</span>; <span class="hljs-regexp">$image</span>->save(ROOT_PATH . <span class="hljs-string">'public/uploads/'</span> . <span class="hljs-regexp">$saveName</span>); <span class="hljs-regexp">$this</span>->success(<span class="hljs-string">'圖片處理完畢...'</span>, <span class="hljs-string">'/uploads/'</span> . <span class="hljs-regexp">$saveName</span>, <span class="hljs-number">1</span>); } } }</span> ``` ``` ### 模板定義 配合控制器的上傳頁面模板修改為: ``` <pre class="calibre18"> ``` <span class="hljs-regexp"><!doctype html></span><span class="hljs-regexp"><<span class="hljs-operator">html</span>></span><span class="hljs-regexp"><<span class="hljs-operator">head</span>></span><span class="hljs-regexp"><<span class="hljs-operator">meta</span> <span class="hljs-operator">charset</span>=<span class="hljs-string">"UTF-8"</span>></span><span class="hljs-regexp"><<span class="hljs-operator">title</span>></span>圖像上傳和處理示例<span class="hljs-regexp"></<span class="hljs-operator">title</span>></span><span class="hljs-regexp"><<span class="hljs-operator">style</span>></span><span class="css"><span class="hljs-regexp">body</span> <span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">font-family</span>:<span class="hljs-string"><span class="hljs-operator">"Microsoft Yahei"</span>,<span class="hljs-operator">"Helvetica Neue"</span>,Helvetica,Arial,sans-serif</span></span>; <span class="hljs-operator"><span class="hljs-title1">font-size</span>:<span class="hljs-string"><span class="hljs-number">16px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"><span class="hljs-number">5px</span></span></span>; }</span><span class="hljs-regexp">.form</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">15px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">font-size</span>:<span class="hljs-string"> <span class="hljs-number">16px</span></span></span>; }</span><span class="hljs-regexp">.form</span> <span class="hljs-regexp">.text</span> <span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">3px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">margin</span>:<span class="hljs-string"><span class="hljs-number">2px</span> <span class="hljs-number">10px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">width</span>:<span class="hljs-string"> <span class="hljs-number">240px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">height</span>:<span class="hljs-string"> <span class="hljs-number">24px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">line-height</span>:<span class="hljs-string"> <span class="hljs-number">28px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">border</span>:<span class="hljs-string"> <span class="hljs-number">1px</span> solid <span class="hljs-title">#D4D4D4</span></span></span>; }</span><span class="hljs-regexp">.form</span> <span class="hljs-regexp">select</span> <span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">5px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">margin</span>:<span class="hljs-string"><span class="hljs-number">2px</span> <span class="hljs-number">10px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">width</span>:<span class="hljs-string"> <span class="hljs-number">150px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">height</span>:<span class="hljs-string"> <span class="hljs-number">30px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">line-height</span>:<span class="hljs-string"> <span class="hljs-number">30px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">border</span>:<span class="hljs-string"> <span class="hljs-number">1px</span> solid <span class="hljs-title">#D4D4D4</span></span></span>; }</span><span class="hljs-regexp">.form</span> <span class="hljs-regexp">.btn</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">margin</span>:<span class="hljs-string"><span class="hljs-number">6px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">6px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">width</span>:<span class="hljs-string"> <span class="hljs-number">120px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">font-size</span>:<span class="hljs-string"> <span class="hljs-number">16px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">border</span>:<span class="hljs-string"> <span class="hljs-number">1px</span> solid <span class="hljs-title">#D4D4D4</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">cursor</span>:<span class="hljs-string"> pointer</span></span>; <span class="hljs-operator"><span class="hljs-title1">background</span>:<span class="hljs-string"><span class="hljs-title">#eee</span></span></span>; }</span><span class="hljs-regexp">.form</span> <span class="hljs-regexp">.file</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">margin</span>:<span class="hljs-string"><span class="hljs-number">6px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">6px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">width</span>:<span class="hljs-string"> <span class="hljs-number">220px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">font-size</span>:<span class="hljs-string"> <span class="hljs-number">16px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">border</span>:<span class="hljs-string"> <span class="hljs-number">1px</span> solid <span class="hljs-title">#D4D4D4</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">cursor</span>:<span class="hljs-string"> pointer</span></span>; <span class="hljs-operator"><span class="hljs-title1">background</span>:<span class="hljs-string"><span class="hljs-title">#eee</span></span></span>; }</span><span class="hljs-regexp">a</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">color</span>:<span class="hljs-string"> <span class="hljs-title">#868686</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">cursor</span>:<span class="hljs-string"> pointer</span></span>; }</span><span class="hljs-operator"><span class="hljs-title1">a</span>:<span class="hljs-string">hover{ text-decoration: underline</span></span>; } <span class="hljs-regexp">h2</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">color</span>:<span class="hljs-string"> <span class="hljs-title">#4288ce</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">font-weight</span>:<span class="hljs-string"> <span class="hljs-number">400</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">6px</span> <span class="hljs-number">0</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">margin</span>:<span class="hljs-string"> <span class="hljs-number">6px</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">font-size</span>:<span class="hljs-string"> <span class="hljs-number">28px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">border-bottom</span>:<span class="hljs-string"> <span class="hljs-number">1px</span> solid <span class="hljs-title">#eee</span></span></span>; }</span><span class="hljs-regexp">div</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">margin</span>:<span class="hljs-string"><span class="hljs-number">8px</span></span></span>; }</span><span class="hljs-regexp">.info</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">12px</span> <span class="hljs-number">0</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">border-bottom</span>:<span class="hljs-string"> <span class="hljs-number">1px</span> solid <span class="hljs-title">#eee</span></span></span>; }</span><span class="hljs-regexp">.copyright</span><span class="hljs-operator">{ <span class="hljs-operator"><span class="hljs-title1">margin-top</span>:<span class="hljs-string"> <span class="hljs-number">24px</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">padding</span>:<span class="hljs-string"> <span class="hljs-number">12px</span> <span class="hljs-number">0</span></span></span>; <span class="hljs-operator"><span class="hljs-title1">border-top</span>:<span class="hljs-string"> <span class="hljs-number">1px</span> solid <span class="hljs-title">#eee</span></span></span>; }</span></span><span class="hljs-regexp"></<span class="hljs-operator">style</span>></span><span class="hljs-regexp"></<span class="hljs-operator">head</span>></span><span class="hljs-regexp"><<span class="hljs-operator">body</span>></span><span class="hljs-regexp"><<span class="hljs-operator">h2</span>></span>圖像上傳和處理示例<span class="hljs-regexp"></<span class="hljs-operator">h2</span>></span><span class="hljs-regexp"><<span class="hljs-operator">form</span> <span class="hljs-operator">method</span>=<span class="hljs-string">"post"</span> <span class="hljs-operator">enctype</span>=<span class="hljs-string">"multipart/form-data"</span> <span class="hljs-operator">class</span>=<span class="hljs-string">"form"</span> <span class="hljs-operator">action</span>=<span class="hljs-string">"{:url('picture')}"</span>></span> 選擇圖像文件:<span class="hljs-regexp"><<span class="hljs-operator">input</span> <span class="hljs-operator">type</span>=<span class="hljs-string">"file"</span> <span class="hljs-operator">class</span>=<span class="hljs-string">"file"</span> <span class="hljs-operator">name</span>=<span class="hljs-string">"image"</span>></span><span class="hljs-regexp"><<span class="hljs-operator">br</span>/></span> 選擇處理類型:<span class="hljs-regexp"><<span class="hljs-operator">select</span> <span class="hljs-operator">name</span>=<span class="hljs-string">"type"</span>></span><span class="hljs-regexp"><<span class="hljs-operator">option</span> <span class="hljs-operator">value</span>=<span class="hljs-string">"1"</span> <span class="hljs-operator">selected</span>></span>圖片裁剪 <span class="hljs-regexp"><<span class="hljs-operator">option</span> <span class="hljs-operator">value</span>=<span class="hljs-string">"2"</span>></span>生成縮略圖 <span class="hljs-regexp"><<span class="hljs-operator">option</span> <span class="hljs-operator">value</span>=<span class="hljs-string">"3"</span>></span>垂直翻轉 <span class="hljs-regexp"><<span class="hljs-operator">option</span> <span class="hljs-operator">value</span>=<span class="hljs-string">"4"</span>></span>水平翻轉 <span class="hljs-regexp"><<span class="hljs-operator">option</span> <span class="hljs-operator">value</span>=<span class="hljs-string">"5"</span>></span>圖片旋轉 <span class="hljs-regexp"><<span class="hljs-operator">option</span> <span class="hljs-operator">value</span>=<span class="hljs-string">"6"</span>></span>添加圖片水印 <span class="hljs-regexp"><<span class="hljs-operator">option</span> <span class="hljs-operator">value</span>=<span class="hljs-string">"7"</span>></span>添加文字水印 <span class="hljs-regexp"></<span class="hljs-operator">select</span>></span><span class="hljs-regexp"><<span class="hljs-operator">br</span>/></span><span class="hljs-regexp"><<span class="hljs-operator">input</span> <span class="hljs-operator">type</span>=<span class="hljs-string">"submit"</span> <span class="hljs-operator">class</span>=<span class="hljs-string">"btn"</span> <span class="hljs-operator">value</span>=<span class="hljs-string">" 提交 "</span>></span><span class="hljs-regexp"></<span class="hljs-operator">form</span>></span><span class="hljs-regexp"><<span class="hljs-operator">div</span> <span class="hljs-operator">class</span>=<span class="hljs-string">"copyright"</span>></span><span class="hljs-regexp"><<span class="hljs-operator">a</span> <span class="hljs-operator">title</span>=<span class="hljs-string">"官方網站"</span> <span class="hljs-operator">href</span>=<span class="hljs-string">"http://www.thinkphp.cn"</span>></span>ThinkPHP<span class="hljs-regexp"></<span class="hljs-operator">a</span>></span><span class="hljs-regexp"><<span class="hljs-operator">span</span>></span>V5<span class="hljs-regexp"></<span class="hljs-operator">span</span>></span><span class="hljs-regexp"><<span class="hljs-operator">span</span>></span>{ 十年磨一劍-為API開發設計的高性能框架 }<span class="hljs-regexp"></<span class="hljs-operator">span</span>></span><span class="hljs-regexp"></<span class="hljs-operator">div</span>></span><span class="hljs-regexp"></<span class="hljs-operator">body</span>></span><span class="hljs-regexp"></<span class="hljs-operator">html</span>></span> ``` ``` ### 示例演示 訪問下面的URL地址: ``` <pre class="calibre18"> ``` <span class="hljs-string">http:</span> <span class="hljs-comment">//tp5.com/index/upload</span> ``` ``` 頁面顯示: ![](https://img.kancloud.cn/65/98/65989118aa274ef6a62231f73d1daa52_665x333.png) 這里僅能上傳`png`和`jpg`類型的圖像文件,沒有選擇或者選擇其他類型的文件都會提示: ![](https://img.kancloud.cn/ca/b2/cab260060af76f5477a06e0e49a6c4ae_494x273.png) 本節示例選擇上傳的圖片文件為: ![](https://img.kancloud.cn/8e/8a/8e8aafeba7ba3bc7c98af1b3f45b3fc5_768x432.png) 點擊上傳并提交后,頁面顯示: ![](https://img.kancloud.cn/d0/39/d03994a4b28c28853e4d132382903d79_448x267.png) 之后會顯示處理之后的圖片: ![](https://img.kancloud.cn/59/90/5990d2058292213b866ea0c64da75820_300x300.png) 下面來具體講下各種圖片處理操作的用法。 ## 讀取圖片 `think\Image`類提供了`open`方法打開圖片文件 ``` <pre class="calibre18"> ``` <span class="hljs-comment">// 獲取上傳文件</span><span class="hljs-regexp">$file</span> = <span class="hljs-regexp">$request</span>->file(<span class="hljs-string">'image'</span>); <span class="hljs-comment">// 讀取圖片文件</span><span class="hljs-regexp">$image</span> = Image::open(<span class="hljs-regexp">$file</span>); ``` ``` 這里的`$file`是一個`\think\File`對象(其實可以支持任何`SplFileInfo`或者子對象),也可以直接傳入一個圖片文件地址: ``` <pre class="calibre18"> ``` <span class="hljs-comment">// 讀取圖片文件</span><span class="hljs-regexp">$image</span> = Image::open(<span class="hljs-string">'./logo.png'</span>); ``` ``` > `open`方法不支持讀取遠程圖片 使用open方法讀取圖片文件后,可以讀取圖片相關信息: ``` <pre class="calibre18"> ``` <span class="hljs-comment">// 返回圖片的寬度</span><span class="hljs-regexp">$width</span> = <span class="hljs-regexp">$image</span>->width(); <span class="hljs-comment">// 返回圖片的高度</span><span class="hljs-regexp">$height</span> = <span class="hljs-regexp">$image</span>->height(); <span class="hljs-comment">// 返回圖片的類型</span><span class="hljs-regexp">$type</span> = <span class="hljs-regexp">$image</span>->type(); <span class="hljs-comment">// 返回圖片的mime類型</span><span class="hljs-regexp">$mime</span> = <span class="hljs-regexp">$image</span>->mime(); <span class="hljs-comment">// 返回圖片的尺寸數組 [ 圖片寬度 , 圖片高度 ]</span><span class="hljs-regexp">$size</span> = <span class="hljs-regexp">$image</span>->size(); ``` ``` ## 圖片裁剪 圖片剪裁使用`crop`方法,用法: > #### crop(剪裁寬度,剪裁高度,X坐標(默認0),Y坐標(默認0)) 示例中圖片剪裁的主要代碼為 ``` <pre class="calibre18"> ``` <span class="hljs-regexp">$image</span>->crop(<span class="hljs-number">300</span>, <span class="hljs-number">300</span>); ``` ``` 表示從左上角開始剪裁寬高都是300的圖片,如果需要改變剪裁的坐標位置,可以用: ``` <pre class="calibre18"> ``` $image->crop(<span class="hljs-number">300</span>, <span class="hljs-number">300</span>, <span class="hljs-number">100</span>, <span class="hljs-number">50</span>); ``` ``` 最終的效果變成: ![](https://img.kancloud.cn/e6/22/e622a5167b5a485363cdc4ec81cf56d4_300x300.png) ## 生成縮略圖 生成圖片縮略圖使用`thumb`方法,用法: > #### thumb(最大寬度,最大高度,裁剪類型) 縮略圖剪裁類型包括如下: 剪裁類型(常量=值) 描述 Image::THUMB\_SCALING = 1 等比例縮放(默認類型) Image::THUMB\_FILLED = 2 縮放后填充 Image::THUMB\_CENTER = 3 居中裁剪 Image::THUMB\_NORTHWEST = 4 左上角裁剪 Image::THUMB\_SOUTHEAST = 5 右下角裁剪 Image::THUMB\_FIXED = 6 固定尺寸縮放示例代碼中的縮略圖效果如圖: ![](https://img.kancloud.cn/0a/80/0a803db66f271b201a35e155444fc7b8_150x150.png) ## 圖像翻轉 圖片翻轉使用`flip`方法,用法如下: > #### flip(翻轉方式) 翻轉方式 常量值 垂直翻轉 Image::FLIP\_X=1 水平翻轉 Image::FLIP\_Y=2垂直翻轉效果: ![](https://img.kancloud.cn/04/2f/042f5a4678a5fc5d1764cc10ac594cac_768x432.png) 水平翻轉效果: ![](https://img.kancloud.cn/1f/ae/1fae8deeda771e9625ac6f79ae06be10_768x432.png) ## 圖片旋轉 圖片翻轉使用`rotate`方法,用法如下: > #### rotate(順時針旋轉的度數) 示例采用90旋轉的效果如圖: ![](https://img.kancloud.cn/80/ee/80eecc9d9e39ed7adf702a3c08a14d36_432x768.png) ## 添加水印 使用`water`方法添加圖片水印 > #### water(水印圖片,水印位置常量(默認右下角),水印透明度(默認100)) 水印位置常量如下: 水印位置 常量值 左上角 Image::WATER\_NORTHWEST=1 上居中 Image::WATER\_NORTH=2 右上角 Image::WATER\_NORTHEAST=3 左居中 Image::WATER\_WEST=4 居中 Image::WATER\_CENTER=5 右居中 Image::WATER\_EAST=6 左下角 Image::WATER\_SOUTHWEST=7 下居中 Image::WATER\_SOUTH=8 右下角 Image::WATER\_SOUTHEAST=9示例代碼: ``` <pre class="calibre18"> ``` <span class="hljs-regexp">$image</span>->water(<span class="hljs-string">'./logo.png'</span>, Image::WATER_NORTHWEST, <span class="hljs-number">50</span>); ``` ``` 示例水印效果如圖: ![](https://img.kancloud.cn/f7/ea/f7ea5774036c5921ef0490683191af78_768x432.png) > 為了示例效果,在操作之前,請把下面的logo圖片保存到public目錄下面。 > > ![](https://img.kancloud.cn/66/bf/66bfc4f1dec8278b649c7968db986c8d_80x80.png) ## 文字水印 使用`text`方法給圖片添加文字(水印) > #### text(水印文字,字體文件路徑,文字大小,文字顏色,文字寫入位置,偏移量,文字傾斜角度) 前面四個參數必須,顏色默認為 #000000 文字位置常量和水印位置一樣。 示例代碼 ``` <pre class="calibre18"> ``` <span class="hljs-regexp">$image</span>->text(<span class="hljs-string">'ThinkPHP'</span>, VENDOR_PATH . <span class="hljs-string">'topthink/think-captcha/assets/ttfs/1.ttf'</span>, <span class="hljs-number">20</span>, <span class="hljs-string">'#ffffff'</span>); ``` ``` ![](https://img.kancloud.cn/24/7b/247bf4387c97f84f81f011f66baba279_768x432.png) > 為了配合演示,我們使用了驗證碼類庫中的字體素材 ## 圖片保存 前面所有的操作都是對圖片進行相關的處理,最后一步就是需要把處理過的圖片文件保存下來。 這就需要調用`save`方法進行圖片的保存操作 > #### save(保存文件名,圖像類型,圖像質量,隔行掃描) 示例中使用當前時間戳作為文件名保存圖片文件,代碼: ``` <pre class="calibre18"> ``` <span class="hljs-comment">// 保存圖片(以當前時間戳)</span><span class="hljs-regexp">$saveName</span> = <span class="hljs-regexp">$request</span>->time() . <span class="hljs-string">'.png'</span>; <span class="hljs-regexp">$image</span>->save(ROOT_PATH . <span class="hljs-string">'public/uploads/'</span> . <span class="hljs-regexp">$saveName</span>); ``` ``` 默認圖片保存的質量是`80`,如果希望采用最高的質量保存,可以使用下面的代碼: ``` <pre class="calibre18"> ``` <span class="hljs-comment">// 保存圖片(以當前時間戳)</span><span class="hljs-regexp">$saveName</span> = <span class="hljs-regexp">$request</span>->time() . <span class="hljs-string">'.png'</span>; <span class="hljs-comment">// 采用最高質量保存圖片</span><span class="hljs-regexp">$image</span>->save(ROOT_PATH . <span class="hljs-string">'public/uploads/'</span> . <span class="hljs-regexp">$saveName</span>,<span class="hljs-string">'png'</span>,<span class="hljs-number">100</span>); ``` ``` > save方法的第四個參數僅針對jpg格式的圖像類型。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看