これは公式のkraken.io PHPライブラリであり、ユーザーが画像の最適化をPHPプロジェクトに迅速に統合するのに役立つはずです。 Kraken.io Image Optimizer。
Composerを使用している場合は、 kraken-io/kraken-phpへの依存関係をプロジェクトのcomposer.jsonファイルに追加するだけです。バージョン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の使用を開始できます。
覚えておいてください - ダウンロードするために提供される最適化された画像にリンクしないでください。最初にそれらをダウンロードしてから、ウェブサイトまたはアプリケーションに置き換える必要があります。セキュリティ上の理由により、最適化された画像は、サーバーで1時間しか利用できません。
最適化する画像のURLを提供するか、画像ファイルをkraken.io APIに直接アップロードすることにより、2つの方法で画像を最適化できます。
最初のオプション(画像URL)は、すでに生産されている画像やインターネット上の他の場所に最適です。 2番目の(直接アップロード)は、展開プロセス、ビルドスクリプト、またはオンラインで利用可能な画像をまだ入手できないユーザーのアップロードのオンザフライ処理に最適です。
Kraken.ioは、最適化結果を取得するための2つのオプションを提供します。 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を反映します。
初期テストの最適化結果をキャプチャする簡単な方法として、RequestBinをお勧めします。
リクエスト:
{
"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 " );画像を提供して画像を最適化するには、 kraken.url()メソッドを使用します。アレイに2つの必須パラメーターを提供する必要があります - 画像への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への絶対パスであるファイルに2つの必須パラメーターを提供し、 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%を節約できます。紛失した最適化により、画質損失がわずか数分の1の優れた結果が得られます。
Lossy Optimizationsを使用するには、単に"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画像は、完全なアルファチャネルを備えた24ビットからパレットの8ビットに変換されます。このプロセスは、RGBA形式のPNG量子化と呼ばれ、アルファ透明度に関するすべての情報を維持しながら、画像で使用される色の量が256に減少することを意味します。
Losy 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この戦略を使用すると、アスペクト比を維持しながら、指定された境界に合わせて画像をサイズ変更できます(自動戦略と同様)。オプションの背景プロパティを使用すると、以前に指定された境界の未使用部分を埋めるために使用される色を指定できます。バックグラウンドプロパティは、HEX表記#f60または#ff6600 、RGB rgb(255, 0, 0)またはRGBA rgba(91, 126, 156, 0.7)でフォーマットできます。デフォルトの背景色は白です。画像のサイズ変更とトリミングの詳細については、kraken.io APIリファレンスをご覧ください。
WebPは、2010年にGoogleが導入した新しい画像形式で、損失とロスレス圧縮の両方をサポートしています。 Googleによると、WebPのロスレス画像のサイズは26%小さく、PNGSと比較してサイズが26%小さく、WebP Lossy画像はJPEG画像と比較して25〜34%少ないサイズです。
PNGまたはJPEGファイルをWebP形式に再圧縮するには"webp": true FlagをリクエストJSONに設定するだけです。また、オプションで"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 ,
" webp " => true ,
" lossy " => true
);
$ data = $ kraken -> upload ( $ params );kraken.io APIを使用すると、異なる画像をあるタイプ/形式から別のタイプに簡単に変換できます。たとえば、透明なPNGファイルを灰色の背景kraken.io APIを備えたJPEGに変えたい場合は、カバーしてください。
異なる画像タイプ間を変換するには、追加のconvertオブジェクトを追加する必要があります。このオブジェクトは3つのプロパティを取ります。
format 。backgroundプロパティ。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 or falseまたはfalse )は、元の拡張子を出力ファイル名に保持する必要があるかどうかを指示します。たとえば、「Image.jpg」をPNG形式に変換する場合、このフラグが出力をオンにして、画像がPNGに変換されていても、「Image.jpg」になります。デフォルト値はfalseであり、つまり、正しい拡張子が常に設定されることを意味します。 デフォルトでは、kraken.io APIは、画像ファイルを可能な限り小さくし、損失レスモードの両方で画像ファイルを作成するために、画像に見つかったすべてのメタデータを削除します。 EXIF、XMP、IPTCタグ、カラープロファイル情報などなどのエントリは、完全に剥がされます。
ただし、画像に含まれるメタ情報の一部、たとえば著作権通知やジオタグを保存したい場合があります。最も重要なメタエントリを保存するために、次の値の1つ以上でリクエストに追加の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 - あなたの一意のAmazon「アクセスキーID」。secret - あなたのユニークなAmazon「Secret Access Key」。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アレイには、Amazon S3アカウントの最適化されたファイルを直接指すkraked_urlキーが含まれます。
" kraked_url " => "http: //s3.amazonaws.com/YOUR_CONTAINER/path/to/file.jpg"必須パラメーター:
user - ラックスペースのユーザー名。key - 一意のクラウドファイルAPIキー。container - クラウドファイルアカウントの宛先コンテナの名前。オプションのパラメーター:
path - コンテナ内の宛先パス( "images/layout/header.jpg"など)。デフォルトはroot "/"になります。ssl apiを指示するブール値( 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対応の最適化されたファイルがクラウドファイルアカウントに保存されない場合、とにかく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 - ソフトレイヤーのユーザー名。key - ソフトレイヤーAPIキー。container - SoftLayerアカウントの宛先コンテナの名前。region - コンテナの領域ams01短い名前にあります。 mon01は次のいずれかですtor01 syd01 lon02 dal05 tok02 hkg02 mex01 par01 fra02 mil01 sjc01 sng01 mel01オプションのパラメーター:
path - コンテナ内の宛先パス(「画像/レイアウト/header.jpg」など)。デフォルトはroot "/"になります。cdn_url最適化されたファイルのpublic cdn URLを返すために、kraken.io apiをkraken.io apiのboolean値trueまたはfalse desting kraken.io api。デフォルトは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 );以下に、 sl_storeを使用して最適化された画像をSoftLayerオブジェクトストレージコンテナにプッシュする完全なJSONリクエストの例を見つけることができます。 URLオプションを使用して、APIに画像のURLを最適化してフィードします。
<?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パラメーターには、最適化結果には、SoftLayer CDNの最適化されたファイルの場所を直接指すkraked_urlが含まれます。たとえば
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" Copyright(c)2013-2015 Nekkra ug
このソフトウェアと関連するドキュメントファイル(「ソフトウェア」)のコピーを入手して、制限なしにソフトウェアを扱うために、このソフトウェアを制限する権利を含め、ソフトウェアのコピーをコピー、変更、公開、配布、販売する、ソフトウェアのコピーを許可する人を許可する人を許可することを含めて、許可が無料で許可されます。
上記の著作権通知とこの許可通知は、ソフトウェアのすべてのコピーまたはかなりの部分に含まれるものとします。
このソフトウェアは、商品性、特定の目的への適合性、および非侵害の保証を含むがこれらに限定されない、明示的または黙示的なものを保証することなく、「現状のまま」提供されます。いかなる場合でも、著者または著作権所有者は、契約、不法行為、またはその他の訴訟、ソフトウェアまたはソフトウェアの使用またはその他の取引に関連する、またはその他の契約、またはその他の請求、またはその他の責任について責任を負いません。