2016-01-06 44 views
0

我使用CakePHP的上傳plugin,因爲很長一段時間後,創建縮略圖,我真的很喜歡它:使用CakePHP的2上傳插件

public $actsAs = array(
    'Upload.Upload' => array(
     'image' => array(
      'fields' => array(
       'dir' => 'dir' 
      ), 
      'thumbnailSizes' => array(
       'xvga' => '1024x768', 
       'vga' => '640x480', 
       'thumb' => '300x300' 
      ), 
      'thumbnailMethod' => 'php', 
     ) 
    ) 
); 

在一個新的用例,我必須做出一些更好的縮略圖比一些分辨率靜態降級到640x640或300x300。我想每個圖像方向都有一個分辨率,或者說圖像不應該超過30kB。

何塞·岡薩雷斯,插件作者,清楚地表明,上傳插件不創建縮略圖:

這個插件不會創建縮略圖。您可以使用自定義Transformer創建文件上傳的修改版本。

我想知道如何與現有的上傳插件一起實現?

回答

0

在端我用滑行thephpleaguehttps://github.com/thephpleague/glide

作爲文件頁上所描述的,它允許「上即時」圖像處理,例如:

  • 使用基於HTTP的簡單API調整圖像大小並將其添加到圖像中。
  • 受控操作的圖像會自動緩存並與 遠期過期標題一起提供。
  • 改變方向
  • 添加水印
  • 添加過濾器
  • 添加邊框
  • 定義影像的最大尺寸

的實現,因爲這在CakePHP中(無需插件)一樣簡單。在作曲家中添加庫作爲依賴關係。JSON:

"require": { 
    "league/glide" : "1.0.x" 
}, 

運行./composer.phar update

在控制器動作可以這樣調用:

https://www.url.com/images/imageResize?w=480&mark=mark.png&markpos=right&markh=60&markpad=4 

public function imageResize() { 
    $server = League\Glide\ServerFactory::create([ 
     'source' => 'files', 
     'cache' => 'files/cache', 
     'watermarks' => 'files/watermarks' 
    ]); 

    $server->outputImage($path, $_GET); 
} 

所以我可以簡單地從應用程序像這樣調用圖片


另一個有用的庫自適應數字圖像http://adaptive-images.com

它檢測到您的訪問者的屏幕尺寸,並自動創建,高速緩存,並提供你的網頁的HTML嵌入式圖像的設備進行適當的重新定標版本。無需標記更改。它旨在用於響應式設計並與流體成像技術相結合。

1

在一個新的用例,我必須做出一些更好的縮略圖比分辨率到640x640或300x300的

一些靜態的降級什麼阻止你做你的自定義圖像操作後,插件處理上傳?你也可以擴展行爲,並添加你想要的。

您可以使用我的Imagine plugin附帶的行爲,以便於圖像處理。或者將其與FileStorage結合使用,使用Imagine在上傳後自動處理圖像。

或直接使用the underlying library Imagine

我想有一個分辨率每個圖像的方向或能力說圖像不應該超過30kB。

對此使用驗證規則。

+0

該插件看起來不錯,但不幸的是它是CakePHP 3. – doonot

+0

閱讀更多的不僅僅是標題?有一個**粗體**線,有從2到3的遷移鏈接。或直接使用Imagine。所以檢查分支/標籤。 https://github.com/burzum/cakephp-imagine-plugin/tree/1.x – burzum