yii2-imagine的拓展和imagine插件是分開的 , yii2只提供了拓展 , 剛好用到yii2 , 搞了一天終于解決了 , 分享一下心得給大家,希望大家少走點彎路。
1、 首先從官網下載yii2-imagine的拓展
下載地址:https://github.com/yiisoft/yii2-imagine
下載包名稱:yii2-imagine-master
2、 然后再下載imagine的插件包
下載地址:https://github.com/avalanche123/Imagine/releases
下載包名稱:Imagine-0.5.0.zip
在閱讀了yii2-imagine的代碼后,我發覺v0.5.0的版本完全兼容。所以大家下載v0.5.0的版本就可以了
3、 在項目yii2的vendor\yiisoft\yii2目錄下創建一個imagine目錄
a) 解壓yii2-imagine-master , 將BaseImage.php還有Image.php復制到imagine目錄中
b) 解壓Imagine-0.5.0.zip ,將Imagine-0.5.0\lib\Imagine目錄 , 復制到imagine目錄下
c) 將vendor\yiisoft\yii2\imagine下的所有頁面,含有
namespace Imagine\
替換成
namespace yii\imagine\Imagine\
含有
use Imagine\
替換成
use yii\imagine\Imagine\
d) 修改vendor\yiisoft\yii2\imagine\BaseImage.php
89行:return new \Imagine\Gmagick\Imagine();
改成 return new Imagine\Gmagick\Imagine();
94行:return new \Imagine\Imagick\Imagine();
改成 return new Imagine\Imagick\Imagine();
99行:return new \Imagine\Gd\Imagine();
改成 return new Imagine\Gd\Imagine();
e) 修改vendor\yiisoft\yii2\imagine\Imagine\Image\Box.php
在頭部追加
use yii\imagine\Imagine\Image\BoxInterface;
4、 大功告成,測試
<?php
use yii\imagine\Image;
//圖片路徑請根據自己的項目的位置調整
Image::frame('path/to/image.jpg', 5, '666', 0)
->rotate(-8)
->save('path/to/destination/image.jpg', ['quality' => 50]);
?>
分享到:QQ空間新浪微博騰訊微博微信
# Yii2 第三方類庫安裝和使用:Imagine
? Imagine
Imagine 是一個面向對象的 PHP 類庫用于圖片操作。這個類庫能夠處理一些常用到的操作如:調整大小、裁剪、應用過濾器等。
其Color類庫可用于對任意對定的顏色生成RGB值。并且還提供一些方法來繪制圖形如:圓弧,橢圓,線,片等。
此外,還可以利用一個靈活的字體類來加載任意字體文件,然后將文字插入到圖片中。
Imagine 是一個會經常更新的類庫,將來還會實現:圖表生成、圓角過濾器等功能。
? Yii2 安裝 Imagine
Imagine 的手動下載和安裝這里就不做介紹了,可自行百度。這里介紹 Yii2 的 Composer 方式來安裝 Imageine。
?方法一
php composer.phar require --prefer-dist yiisoft/yii2-imagine
?方法二
在項目 composer.json 文件內的 require 字段里添加如下代碼:
"yiisoft/yii2-imagine": "~2.1.0"
然后再項目根目錄下執行命令(cmd):
composer require yiisoft/yii2-imagine
? Yii2 使用 Imagine
use yii\imagine\Image;
$srcImg = Yii::getAlias('@webroot/test.jpg');
$aimImg = Yii::getAlias('@webroot/testdeal.jpg');
$srcTTF = Yii::getAlias('@webroot/img/symbol.ttf');
// 縮略
// 參數 inset 表示定框縮略
// 圖片完整縮略在 200x100 的框內
// 備注:定框的寬度或高度必須有一個小于圖片的實際尺寸,否則直接返回源圖尺寸
Image::thumbnail($srcImg, 200, 100, 'inset')->save($aimImg, ['quality'=>100]);
// 縮略
// 參數 outbound 表示單尺寸優先縮略并居中截取
// 該參數為函數的默認值,它會為您盡可能多的截取圖片但又不會超出圖片范圍
// 例:源圖 500x200,那么按照高度 100 縮略(變為250x100),然后再居中截取 200x100
// 例:源圖 400x350,那么按照寬度 200 縮率(變為200x175),然后再居中截取 200x100
// 例:源圖 100x80,那么不縮率不截取,直接返回源圖 100x80
Image::thumbnail($srcImg, 200, 100, 'outbound')->save($aimImg, ['quality'=>100]);
// 縮略
// 按寬度 200 縮略,高度自適應
Image::thumbnail($srcImg, 200, null)->save($aimImg, ['quality'=>100]);
// 縮略
// 按高度 100 縮略,寬度自適應
Image::thumbnail($srcImg, null, 100)->save($aimImg, ['quality'=>100]);
// 剪切
// 參數:源圖、寬度、高度、起始點
// 將源文件 $srcImg 保存到 $aimImg
Image::crop($srcImg, 400, 200, [100,100])->save($aimImg);
// 旋轉
// 未研究
Image::frame('@webroot/img/test-image.jpg', 5, '666', 0)->rotate(-8)->save(Yii::getAlias('@webroot/img/thumb-test-frame.jpg'), ['quality' => 100]);
// 水印
// 未研究
Image::watermark('@webroot/img/test-image.jpg', '@webroot/img/watermark.jpg', [10,10])->save(Yii::getAlias('@webroot/img/thumb-test-watermark.jpg'), ['quality' => 100]);
// 文字水印
// 參數:源圖、文字、字體、起始點、字體配置
Image::text($srcImg, 'hello world', $srcTTF, [100,100] ,['color'=>'000000','size'=>50])->save($aimImg, ['quality'=>100]);
文字水印的字體文件
分享下:
$font = '@static/common/font/STXINGKA.TTF';//華文行楷
$srcTTF = Yii::getAlias($font);
$filename = STATICURL . '/site/images/name_back.jpg';
$text = '哈哈哈 hello word';
Image::text($filename, $text, $srcTTF, [50, 500], ['color' => 'fff', 'size' => 35])->show('jpg');
- Yii2使用Url組件
- Yii2的Html,Request組件詳解
- YII2.0框架, 多圖片上傳功能
- yii2-imagine配置
- 有潔癖的禁止默認YII自帶垃圾代碼(個人認為)、JS、CSS(新手教程)
- Yii2 API接口輸出統一Json和jsonp格式方法
- MySql 創建表的一些語句釋義
- Yii2聯合查詢(配合GridView)
- Yii 通用系統字典
- ArrayHelper的多維數組排序函數multisort,強大無比。
- 路由規則,在Url中替換使用'/'以外的符號連接
- 從excel文件中讀取表格內容,并批量寫入數據庫
- yii2注冊時驗證用戶名、郵箱等唯一性
- Yii2最全的實戰教程
- Composer安裝yii2-imagine 壓縮,剪切,旋轉,水印
- LinkPager增加總頁數 和總記錄數
- Yii2 獲取模塊名控制器名方法名
- Yii2使用yii2-adminlte+yii2-admin左側菜單子路徑不高亮問題又解
- 前端CSS框架
- Yii2 之 frontend 子模塊實踐之一:添加前后臺子模塊
- Yii2 之 frontend 子模塊實踐之二:構建子模塊的獨立配置
- Yii2 之 frontend 子模塊實踐之三:布局和語言配置
- 完美解決ajax驗證碼不刷新問題,讓驗證碼更加美觀,不修改任何源代碼
- yii2.0 表單小部件常用的默認選中
- Yii2 controller 傳值給layout
- yii2 dropDownList 二級和三級 聯動寫法
- 微信掃碼登錄 新窗口二維碼 掃完關閉二維碼頁面 進入登錄頁面
- yii2 實現 "上一篇,下一篇" 功能
- Yii 行為簡單應用
- SQL語句