這是官方的Kraken.IO PHP庫,該庫應非常快速地將我們的圖像優化整合到其PHP項目中。 kraken.io圖像優化器。
如果您使用的是作曲家,則可以在項目的composer.json文件中添加對kraken-io/kraken-php的依賴性。這是對版本1.2的依賴性的示例:
{
"require" : {
"kraken-io/kraken-php" : " ^1.2 "
}
}另外,您還可以在項目的根目錄中執行以下命令:
composer require kraken-io/kraken-php
如果您已經有了git,那麼下載kraken-php庫的最簡單方法與git命令:
git clone git://github.com/kraken-io/kraken-php.git /path/to/include/kraken
另外,您可以從GitHub下載PHP文件,並將其放置在PHP項目中:
https://github.com/kraken-io/kraken-php/archive/master.zip
首先,您需要註冊kraken.io API並獲取獨特的API鍵和API秘密。您將在API憑據下找到兩者。設置帳戶後,您可以在應用程序中開始使用kraken.io api。
請記住 - 切勿鏈接到提供下載的優化圖像。您必須先下載它們,然後在網站或應用程序中替換它們。由於安全原因,優化圖像僅在我們的服務器上可用一小時可用。
您可以通過兩種方式優化圖像 - 通過提供要優化的圖像的URL或將圖像文件直接上傳到Kraken.io API。
第一個選項(圖像URL)非常適合已經在生產或Internet上任何其他位置的圖像。第二個(直接上傳)非常適合您的部署過程,構建腳本或用戶上載未在線可用圖像的即時處理。
Kraken.io為您提供了兩個選擇優化結果的選項。在wait選項設置的情況下,結果將在響應中立即返回。使用callback_url選項設置,結果將發佈到您請求中指定的URL。
在對API的每個請求打開wait選項後,連接將保持打開狀態,直到圖像被優化為止。完成此操作後,您將使用包含優化結果的JSON對象立即響應。要使用此選項,只需在您的請求中設置"wait": true 。
要求:
{
"auth" : {
"api_key" : "your-api-key" ,
"api_secret" : "your-api-secret"
} ,
"url" : "http://image-url.com/file.jpg" ,
"wait" : true
}回覆
{
"success" : true ,
"file_name" : "file.jpg" ,
"original_size" : 324520 ,
"kraked_size" : 165358 ,
"saved_bytes" : 159162 ,
"kraked_url" : "http://dl.kraken.io/d1aacd2a2280c2ffc7b4906a09f78f46/file.jpg"
}使用回調URL,HTTPS連接將立即終止,並將在響應主體中返回唯一的id 。優化之後,kraken.io將向您的請求中指定的callback_url發布消息。響應中的ID將反映您回調URL的結果中的ID。
我們建議請求Bin作為捕獲初始測試優化結果的簡便方法。
要求:
{
"auth" : {
"api_key" : "your-api-key" ,
"api_secret" : "your-api-secret"
} ,
"url" : "http://image-url.com/file.jpg" ,
"callback_url" : "http://awesome-website.com/kraken_results"
}回覆:
{
"id" : "18fede37617a787649c3f60b9f1f280d"
}結果發佈到回調URL:
{
"id" : "18fede37617a787649c3f60b9f1f280d"
"success" : true ,
"file_name" : "file.jpg" ,
"original_size" : 324520 ,
"kraked_size" : 165358 ,
"saved_bytes" : 159162 ,
"kraked_url" : "http://dl.kraken.io/18fede37617a787649c3f60b9f1f280d/file.jpg"
} 第一步是在創建新的kraken.io實例時提供唯一的API密鑰和API秘密來驗證Kraken.io API:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );通過提供圖像URL使用kraken.url()方法來優化圖像。您將需要在圖像中提供兩個強制性參數url ,並wait或callback_url :
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );
$ params = array (
" url " => " http://url-to-image.com/file.jpg " ,
" wait " => true
);
$ data = $ kraken -> url ( $ params );根據data陣列中選擇的響應選項(等待或回調URL),您將找到包含success屬性,文件名,原始文件大小,雜項文件大小,節省量和優化圖像URL的優化ID或優化結果:
array ( 6 ) {
' success ' =>
bool(true)
' file_name ' =>
string( 8 ) " file.jpg "
' original_size ' =>
int( 62422 )
' kraked_size ' =>
int( 52783 )
' saved_bytes ' =>
int( 9639 )
' kraked_url ' =>
string( 65 ) " http://dl.kraken.io/d1aacd2a2280c2ffc7b4906a09f78f46/file.jpg "
}如果要將圖像直接上傳到kraken.io api,請使用kraken->upload()方法。您將需要在數組 - file中提供兩個強制性參數,這是文件的絕對路徑,然後wait或callback_url 。
在$data數組中,您將找到與上面的url選項相同的優化屬性。
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );
$ params = array (
" file " => " /path/to/image/file.jpg " ,
" wait " => true
);
$ data = $ kraken -> upload ( $ params );當您決定僅犧牲少量的圖像質量(通常對人眼不知所措)時,您將能夠節省多達90%的初始文件重量。損失優化將為您提供出色的結果,而圖像質量損失的一小部分。
要使用有損優化,只需在您的請求中設置"lossy" => true :
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );
$ params = array (
" file " => " /path/to/image/file.jpg " ,
" wait " => true ,
" lossy " => true
);
$ data = $ kraken -> upload ( $ params );PNG圖像將通過完整的alpha通道從24位轉換為24位的8位。此過程稱為RGBA格式的PNG量化,意味著圖像中使用的顏色量將減少到256,同時維持有關Alpha透明度的所有信息。
對於有損的JPEG優化,Kraken.io將生成具有不同質量設置的輸入圖像的多個副本。然後,它將明智地選擇具有最佳質量的檔案化評分的產品。這樣可以確保您的JPEG圖像的尺寸最小,而無需人工選擇最佳圖像。
圖像調整選項非常適合在應用程序中創建縮略圖或預覽圖像。 Kraken.io首先要調整給定圖像大小,然後使用其大量優化算法對其進行優化。 resize選項需要一些參數,例如所需的width和/或height以及強制性strategy屬性。例如:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );
$ params = array (
" file " => " /path/to/image/file.jpg " ,
" wait " => true ,
" resize " => array (
" width " => 100 ,
" height " => 75 ,
" strategy " => " crop "
)
);
$ data = $ kraken -> upload ( $ params ); strategy屬性可以具有以下值之一:
exact - 通過精確的寬度/高度調整大小。不會保持縱橫比。portrait - 將設置精確的寬度,將根據縱橫比調整高度。landscape - 將設置精確的高度,寬度將根據縱橫比進行調整。auto - 將根據縱橫比為給定的圖像選擇最佳策略(肖像或景觀)。fit此選項將裁剪和調整圖像大小以適合所需的寬度和高度。square此策略將首先通過較短的尺寸裁剪圖像,以使其成為正方形,然後將其調整到指定的大小。crop - 此選項將您的圖像裁剪成您指定的確切大小而不會失真。fill - 此策略使您可以調整圖像大小以在保留縱橫比的同時(就像自動策略一樣)。可選的背景屬性允許您指定一種顏色,該顏色將用於填充先前指定的邊界的未使用部分。背景屬性可以在十六進制符號#f60或#ff6600 ,RGB rgb(255, 0, 0)或RGBA rgba(91, 126, 156, 0.7)中格式化。默認的背景顏色為白色。有關圖像調整和裁剪的更多信息,請參見Kraken.io API參考
WebP是Google在2010年引入的一種新圖像格式,可支持有損和無損壓縮。根據Google的說法,與PNG相比,WebP無損圖像的尺寸小26% ,與JPEG圖像相比,WebP損耗的圖像的尺寸小25-34% 。
要將您的png或JPEG文件重新壓縮到WebP格式中,只需設置"webp": true標誌。您還可以選擇設置"lossy": true標誌來利用WebP的有損壓縮:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );
$ params = array (
" file " => " /path/to/image/file.jpg " ,
" wait " => true ,
" webp " => true ,
" lossy " => true
);
$ data = $ kraken -> upload ( $ params );Kraken.io API允許您輕鬆地將不同的圖像從一種類型/格式轉換為另一種類型/格式。例如,如果您想將透明的PNG文件轉換為帶有灰色背景的JPEG,請訪問您。
為了在不同的圖像類型之間轉換,您需要在請求JSON中添加額外的convert對象。該對象採用三個屬性:
format指定要將圖像轉換為的文件類型。background屬性,您可以在其中從透明文件格式(例如PNG和GIF)轉換為完全不透明格式(例如JPEG)時指定背景顏色。keep_extension屬性,可讓您保持原始文件擴展名,無論輸出圖像格式如何。強制性參數:
format - 您希望將圖像轉換為的圖像格式。這可以接受以下值之一: jpeg , png或gif 。可選參數:
background - 從PNG或GIF(例如JPEG)轉換為完全不透明格式的透明文件格式時的背景圖像。背景屬性可以通過十六進制符號"#f60"或"#ff6600" ,RGB "rgb(255, 0, 0)"或RGBA "rgba(91, 126, 156, 0.7)" 。默認的背景顏色為白色。keep_extension指導kraken.io api的布爾值( true或false )是否應將原始擴展名保留在輸出文件名中。例如,當將“ image.jpg”轉換為png格式時,此標誌已打開輸出圖像名稱,即使圖像已轉換為png,也仍將是“ image.jpg”。默認值是false ,含義正確的擴展名將始終設置。 默認情況下,kraken.io api將剝離圖像中發現的所有元數據,以使圖像文件盡可能小,並且以有損和無損模式。 EXIF,XMP和IPTC標籤,顏色配置文件信息等條目將完全剝離。
但是,在某些情況下,您可能想保留圖像中包含的某些元信息,例如版權通知或geotags。為了保留最重要的meta條目,使用以下一個或多個值向您的請求中添加了一個額外的preserve_meta數組:
{
"preserve_meta" : [ "date" , "copyright" , "geotag" , "orientation" , "profile" ]
}profile - 將保留ICC顏色配置文件。 ICC顏色配置文件信息為圖像增加了不必要的膨脹。但是,在極罕見的情況下,可以保留此信息可能會導致所得文件的亮度和/或飽和度變化。date - 將保留圖像創建日期。copyright - 將保留版權條目。geotag將保留特定於位置的信息。orientation - 將保留方向(旋轉)標記。示例集成:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );
$ params = array (
" file " => " /path/to/image/file.jpg " ,
" wait " => true ,
" preserve_meta " => array ( " profile " , " geotag " )
);
$ data = $ kraken -> upload ( $ params );Kraken.io API允許您將優化的圖像直接存儲在S3存儲桶,雲文件容器,Azure容器或SoftLayer對象存儲容器中。只有幾個其他參數,您的優化圖像將立即將其推向外部存儲。
強制性參數:
key - 您唯一的亞馬遜“訪問密鑰ID”。secret - 您獨特的亞馬遜“秘密訪問密鑰”。bucket Amazon S3帳戶上的目標容器的名稱。region - 您的S3存儲桶所在的區域的名稱。如果區域與默認一個( us-east-1 )不同,則該字段是必須的。 S3區域的完整列表可以在此處找到。可選參數:
path - S3存儲桶中的目標路徑(例如"images/layout/header.jpg" )。默認為root "/" 。acl目標對象的權限。這可以是"public_read"或"private" 。默認為"public_read" 。上述參數必須以s3_store密鑰傳遞:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );
$ params = array (
" file " => " /path/to/image/file.jpg " ,
" wait " => true ,
" s3_store " => array (
" key " => " your-amazon-access-key " ,
" secret " => " your-amazon-secret-key " ,
" bucket " => " destination-bucket "
)
);
$ data = $ kraken -> upload ( $ params ); $data陣列將包含一個kraked_url鍵,該密鑰直接指向您的Amazon S3帳戶中的優化文件:
" kraked_url " => "http: //s3.amazonaws.com/YOUR_CONTAINER/path/to/file.jpg"強制性參數:
user - 您的Rackspace用戶名。key - 您唯一的雲文件API鍵。container - 雲文件帳戶上目標容器的名稱。可選參數:
path - 容器中的目標路徑(例如"images/layout/header.jpg" )。默認為root "/" 。ssl指導kraken.io api從rackspace cloudfiles獲取SSL或非SSL URL的布爾值( true或false )。默認為false ,含義非SSL URL將返回。上述參數必須以cf_store密鑰傳遞:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );
$ params = array (
" file " => " /path/to/image/file.jpg " ,
" wait " => true ,
" cf_store " => array (
" user " => " your-rackspace-username " ,
" key " => " your-rackspace-api-key " ,
" container " => " destination-container " ,
" ssl " => true
)
);
$ data = $ kraken -> upload ( $ params );如果您的容器是啟用了CDN的,那麼優化結果將包含kraked_url ,它直接指向雲文件帳戶中優化的文件位置,例如:
kraked_url => "http: //e9ffc04970a269a54eeb-cc00fdd2d4f11dffd931005c9e8de53a.r2.cf1.rackcdn.com/path/to/file.jpg"如果您的容器不符合CDN的優化文件,則無論如何將存儲在您的CloudFiles帳戶中,但是kraked_url將指向Kraken.IO API存儲中的優化映像URL:
kraked_url => "http: //dl.kraken.io/ecdfa5c55d5668b1b5fe9e420554c4ee/file.jpg"強制性參數:
account - 您的Azure存儲帳戶。key - 您唯一的Azure存儲訪問密鑰。container - Azure帳戶上的目標容器的名稱。可選參數:
path - 容器中的目標路徑(例如"images/layout/header.jpg" )。默認為root "/" 。上述參數必須以azure_store密鑰傳遞:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );
$ params = array (
" file " => " /path/to/image/file.jpg " ,
" wait " => true ,
" azure_store " => array (
" account " => " your-azure-account " ,
" key " => " your-azure-storage-access-key " ,
" container " => " destination-container "
)
);
$ data = $ kraken -> upload ( $ params );強制性參數:
user - 您的SoftLayer用戶名。key - 您的SoftLayer API鍵。container - 軟件帳戶上的目標容器的名稱。region - 您的容器所在的區域的縮寫。這可以是以下一個: syd01 lon02 mon01 dal05 tok02 tor01 hkg02 mex01 par01 fra02 mil01 sjc01 ams01 sng01 mel01可選參數:
path - 容器中的目標路徑(例如“圖像/佈局/header.jpg”)。默認為root“/”。cdn_url布爾值是true或false指示kraken.io api返回優化文件的公共cdn URL。默認為false含義非CDN URL將返回。以上參數必須在sl_store對像中傳遞:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );
// Minimal request, providing only the mandatory parameters */
$ params = array (
" file " => " /path/to/image/file.jpg " ,
" wait " => true ,
" sl_store " => array (
" user " => " your-softlayer-account " ,
" key " => " your-softlayer-key " ,
" container " => " destination-container " ,
" region " => " your-container-location "
)
);
$ data = $ kraken -> upload ( $ params );在下面,您可以找到一個完整的JSON請求的示例,該請求使用sl_store將優化的圖像推入SoftLayer對象存儲容器。我們將使用URL選項將API用以進行優化的圖像來饋送API:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " );
$ params = array (
" url " => " http://awesome-website.com/images/header.jpg " ,
" wait " => true ,
" sl_store " => array (
" user " => " your-softlayer-account " ,
" key " => " your-softlayer-key " ,
" container " => " destination-container " ,
" region " => " your-container-location " ,
" cdn_url " => true ,
" path " => " images/layout/header.jpg "
)
);
$ data = $ kraken -> upload ( $ params );如果您的SoftLayer容器已啟用CDN,並且您已傳遞了"cdn_url": true參數,優化結果將包含kraked_url ,它將直接指向SoftLayer cdn中優化的文件位置,例如:
kraked_url => "http: //1c231.http.fra02.cdn.softlayer.net/images/layout/header.jpg"如果您的容器不啟用CDN的kraked_url ,將指向Kraken.io API中的優化圖像URL:
kraked_url => "http: //dl.kraken.io/api/ecdfa5c55d5668b1b5fe9e420554c4ee/header.jpg" 版權(c)2013-2015 nekkra ug
特此免費授予獲得此軟件副本和相關文檔文件副本(“軟件”)的任何人,以無限制處理該軟件,包括無限制的使用權,複製,複製,修改,合併,合併,發布,分發,分發,分發,訂婚,和/或允許軟件的副本,並允許對以下條件提供以下條件,以下是以下條件。
上述版權通知和此許可通知應包含在軟件的所有副本或大量部分中。
該軟件是“原樣”提供的,沒有任何形式的明示或暗示保證,包括但不限於適銷性,特定目的的適用性和非侵權的保證。在任何情況下,作者或版權持有人都不應對任何索賠,損害賠償或其他責任責任,無論是在合同,侵權的訴訟中還是其他責任,是由軟件,使用或與軟件中的使用或其他交易有關的。