Dies ist die offizielle Kraken.io -PHP -Bibliothek, die den Benutzern helfen sollte, unsere Bildoptimierung sehr schnell in ihre PHP -Projekte zu integrieren. Kraken.io Bildoptimierer.
Wenn Sie Composer verwenden, können Sie der composer.json -Datei Ihres Projekts einfach eine Abhängigkeit von kraken-io/kraken-php hinzufügen. Hier ist ein Beispiel für eine Abhängigkeit von Version 1.2:
{
"require" : {
"kraken-io/kraken-php" : " ^1.2 "
}
}Alternativ können Sie auch den folgenden Befehl im Stammverzeichnis Ihres Projekts ausführen:
composer require kraken-io/kraken-php
Wenn Sie bereits Git haben, ist der einfachste Weg, die Kraken-Php-Bibliothek herunterzuladen, mit dem Befehl git:
git clone git://github.com/kraken-io/kraken-php.git /path/to/include/kraken
Alternativ können Sie die PHP -Dateien von GitHub herunterladen und in Ihrem PHP -Projekt platzieren:
https://github.com/kraken-io/kraken-php/archive/master.zip
Zuerst müssen Sie sich für die Kraken.io -API anmelden und Ihren einzigartigen API -Schlüssel und Ihren API -Geheimnis erhalten. Sie finden beide unter API -Anmeldeinformationen. Sobald Sie Ihr Konto eingerichtet haben, können Sie in Ihren Anwendungen die Kraken.io -API verwenden.
Denken Sie daran - verlinken Sie niemals mit optimierten Bildern, die zum Herunterladen angeboten werden. Sie müssen sie zuerst herunterladen und dann in Ihren Websites oder Anwendungen ersetzen. Aus Sicherheitsgründen sind optimierte Bilder nur für eine Stunde auf unseren Servern verfügbar.
Sie können Ihre Bilder auf zwei Arten optimieren - indem Sie eine URL des Bildes bereitstellen, die Sie optimieren möchten, oder indem Sie eine Bilddatei direkt auf die API von Kraken.io hochladen.
Die erste Option (Bild -URL) eignet sich hervorragend für Bilder, die bereits in Produktion oder an einem anderen Ort im Internet sind. Der zweite (direkter Upload) ist ideal für Ihren Bereitstellungsprozess, das Erstellen von Skript oder die Verarbeitung der Uploads Ihres Benutzers, bei denen Sie noch nicht die Bilder online verfügbar haben.
Kraken.io bietet Ihnen zwei Optionen zum Abrufen der Optimierungsergebnisse. Mit der wait werden die Ergebnisse sofort in der Antwort zurückgegeben. Mit der Option callback_url werden die Ergebnisse an der in Ihrer Anfrage angegebenen URL veröffentlicht.
Mit der wait für jede Anfrage an die API wird die Verbindung offen gehalten, bis das Bild optimiert wurde. Sobald dies erledigt ist, erhalten Sie eine sofortige Antwort mit einem JSON -Objekt, das Ihre Optimierungsergebnisse enthält. Um diese Option zu verwenden, setzen Sie einfach "wait": true in Ihrer Anfrage.
Anfrage:
{
"auth" : {
"api_key" : "your-api-key" ,
"api_secret" : "your-api-secret"
} ,
"url" : "http://image-url.com/file.jpg" ,
"wait" : true
}Antwort
{
"success" : true ,
"file_name" : "file.jpg" ,
"original_size" : 324520 ,
"kraked_size" : 165358 ,
"saved_bytes" : 159162 ,
"kraked_url" : "http://dl.kraken.io/d1aacd2a2280c2ffc7b4906a09f78f46/file.jpg"
} Mit der Callback -URL wird die HTTPS -Verbindung sofort beendet und eine eindeutige id in der Antwortkörper zurückgegeben. Nachdem die Optimierung über kraken.io überliefert ist, wird eine Nachricht an die in Ihrer Anfrage angegebene callback_url veröffentlichen. Die ID in der Antwort spiegelt die ID in den Ergebnissen, die in Ihrer Callback -URL veröffentlicht wurden, wider.
Wir empfehlen RequestBin als einfache Möglichkeit, Optimierungsergebnisse für Ersttests zu erfassen.
Anfrage:
{
"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"
}Antwort:
{
"id" : "18fede37617a787649c3f60b9f1f280d"
}Ergebnisse, die an der Callback -URL veröffentlicht wurden:
{
"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"
} Der erste Schritt besteht darin, sich mit der API von Kraken.io zu authentifizieren, indem Sie Ihren einzigartigen API -Schlüssel und API -Geheimnis bereitstellen und gleichzeitig eine neue Kraken.io -Instanz erstellen:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " ); Um ein Bild durch Bereitstellung von Bild -URL zu optimieren, verwenden Sie die Methode kraken.url() . Sie müssen zwei obligatorische Parameter in einem Array bereitstellen - url für das Bild und wait oder 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 ); Abhängig von einer ausgewählten Antwortoption (Warten- oder Rückruf -URL) im data finden Sie entweder die Optimierungs -ID oder die Optimierungsergebnisse, die eine success , einen Dateinamen, die ursprüngliche Dateigröße, die Krakztateigröße, die Einsparung und die optimierte Bild -URL enthalten:
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 "
} Wenn Sie Ihre Bilder direkt auf kraken.io-API hochladen möchten, verwenden Sie die Methode kraken->upload() . Sie müssen zwei obligatorische Parameter in einer Array file angeben, die der absolute Pfad zur Datei und wait oder callback_url ist.
Im $data -Array finden Sie die gleichen Optimierungseigenschaften wie bei der obigen url -Option.
<?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 );Wenn Sie sich entscheiden, nur eine kleine Menge an Bildqualität zu opfern (normalerweise nicht für das menschliche Auge), können Sie bis zu 90% des anfänglichen Dateigewichts sparen. Verlustige Optimierung bietet Ihnen hervorragende Ergebnisse mit nur einem Bruchteil des Verlusts der Bildqualität.
Um verlustige Optimierungen zu verwenden, setzen Sie in Ihrer Anfrage einfach "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-Bilder werden von 24-Bit in palettierte 8-Bit mit vollem Alpha-Kanal konvertiert. Dieser Prozess wird als PNG -Quantisierung im RGBA -Format bezeichnet und bedeutet, dass die Menge der in einem Bild verwendeten Farben auf 256 reduziert wird, während alle Informationen über Alpha -Transparenz beibehalten werden.
Für verlustige JPEG -Optimierungen kraken.io generiert mehrere Kopien eines Eingabebildes mit unterschiedlichen Qualitätseinstellungen. Anschließend wählt es intelligent mit der besten Qualität aus, um die Ration zu filen. Dies stellt sicher, dass Ihr JPEG -Bild mit der höchstmöglichen Qualität in der kleinsten Größe liegt, ohne dass ein Mensch das optimale Bild auswählt.
Die Option zur Bildgrößenänderung eignet sich hervorragend zum Erstellen von Miniaturansichten oder Vorschau -Bildern in Ihren Anwendungen. Kraken.io wird das angegebene Bild zuerst ändern und es dann mit seiner Vielzahl von Optimierungsalgorithmen optimieren. Die Option resize erfordert einige Parameter wie gewünschte width und/oder height und eine obligatorische strategy . Zum Beispiel:
<?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 ); Die strategy kann einen der folgenden Werte haben:
exact - Größe durch genaue Breite/Höhe. Es wird kein Seitenverhältnis beibehalten.portrait - Die genaue Breite wird festgelegt, die Höhe wird nach Seitenverhältnis eingestellt.landscape - Die genaue Höhe wird festgelegt, die Breite wird nach Seitenverhältnis eingestellt.auto - Die beste Strategie (Porträt oder Landschaft) wird für ein bestimmtes Bild gemäß dem Seitenverhältnis ausgewählt.fit - Diese Option wird Ihre Bilder an die gewünschte Breite und Höhe angepasst.square - Diese Strategie wird das Bild zuerst nach seiner kürzeren Dimension erstellen, um es zu einem Quadrat zu machen, und dann die Größe der angegebenen Größe ändern.crop - Mit dieser Option werden Ihr Bild auf die genaue Größe ohne Verzerrung aufgetaucht.fill - Mit dieser Strategie können Sie das Bild so ändern, dass sie die angegebenen Grenzen anpassen und gleichzeitig das Seitenverhältnis erhalten (genau wie bei der Autostrategie). Mit der optionalen Hintergrundeigenschaft können Sie eine Farbe angeben, mit der die nicht verwendeten Teile der zuvor angegebenen Grenzen gefüllt werden können. Die Hintergrundeigenschaft kann in HEX -Notation #f60 oder #ff6600 , RGB rgb(255, 0, 0) oder RGBA rgba(91, 126, 156, 0.7) formatiert werden. Die Standard -Hintergrundfarbe ist weiß.Weitere Informationen zur Bildänderung und Anbaus zur Bild von Bild finden Sie in der Kraken.io -API -Referenz
WebP ist ein neues Bildformat, das von Google 2010 eingeführt wurde, das sowohl eine verlust- als auch verlustlose Komprimierung unterstützt. Laut Google sind webp-verlustfreie Bilder im Vergleich zu PNGs um 26% kleiner und webp-Verlustbilder sind 25-34% kleiner im Vergleich zu JPEG-Bildern.
Um Ihre PNG- oder JPEG -Dateien in das WebP -Format zu verwirklichen, setzen Sie einfach "webp": true Flag in Ihrer Anfrage JSON. Sie können optional auch "lossy": true Flag einstellen, um die verlustige Komprimierung von WebP zu nutzen:
<?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 );Mit der API von Kraken.io können Sie verschiedene Bilder einfach von einem Typ/Format in einen anderen konvertieren. Wenn Sie beispielsweise Ihre transparente PNG -Datei in ein JPEG mit einem grauen Hintergrund kraken.io -API verwandeln möchten.
Um zwischen verschiedenen Bildtypen zu konvertieren, müssen Sie ein zusätzliches convert zu Ihrem Anforderungsanfrage hinzufügen. Dieses Objekt benötigt drei Eigenschaften:
format , mit dem Sie den Dateityp angeben, in den Ihr Bild konvertiert wird.background , in der Sie Hintergrundfarbe angeben können, wenn Sie aus transparenten Dateiformaten wie PNG und GIF in ein vollständig undurchsichtiges Format wie JPEG konvertieren.keep_extension , mit der Sie die ursprüngliche Dateierweiterung unabhängig vom Ausgabebildformat intakt halten können.Obligatorische Parameter:
format - Das Bildformat, in das Sie Ihr Bild umwandeln möchten. Dies kann einen der folgenden Werte akzeptieren: jpeg , png oder gif .Optionale Parameter:
background - Hintergrundbild beim Konvertieren aus transparenten Dateiformaten wie PNG oder GIF in vollständig undurchsichtiges Format wie JPEG. Die Hintergrundeigenschaft kann in der Hex -Notation "#f60" oder "#ff6600" , "rgb(255, 0, 0)" oder RGBA "rgba(91, 126, 156, 0.7)" übergeben werden. Die Standard -Hintergrundfarbe ist weiß.keep_extension - Ein boolescher Wert ( true oder false ), der Kraken.io -API anweist, ob die ursprüngliche Erweiterung im Ausgabedateinamen aufbewahrt werden sollte oder nicht. Wenn Sie beispielsweise "Image.jpg" in das PNG -Format mit diesem Flag konvertieren, wird der Ausgangsbildname immer noch "image.jpg" ausgeschaltet, obwohl das Bild in eine PNG konvertiert wurde. Der Standardwert ist false , was bedeutet, dass die richtige Erweiterung immer festgelegt wird. Standardmäßig wird Kraken.io API alle in einem Bild gefundenen Metadaten ausziehen , um die Bilddatei so klein wie möglich und sowohl in verlustigen als auch in verlustlosen Modi zu gestalten. Einträge wie EXIF-, XMP- und IPTC -Tags, Farbprofilinformationen usw. werden insgesamt entzogen.
Es gibt jedoch Situationen, in denen Sie möglicherweise einige der im Bild enthaltenen Meta -Informationen erhalten möchten, z. B. Urheberrechtsbekanntmachung oder Geotags. Um die wichtigsten Meta -Einträge zu erhalten, fügen Sie Ihrer Anfrage ein oder mehrere der folgenden Werte ein zusätzliches preserve_meta -Array hinzu:
{
"preserve_meta" : [ "date" , "copyright" , "geotag" , "orientation" , "profile" ]
}profile - erhalten Sie das ICC -Farbprofil. ICC -Farbprofilinformationen fügen den Bildern unnötiges Aufblähen hinzu. Wenn Sie jedoch in extrem seltenen Fällen beibehalten werden, kann dies zu einer Änderung der Helligkeit und/oder der Sättigung der resultierenden Datei erforderlich sein.date - wird das Datum der Bilderstellung erhalten.copyright - wird Urheberrechtseinträge bewahren.geotag - behält ortsspezifische Informationen.orientation - Erhält die Ausrichtung (Rotation) Marke.Beispielintegration:
<?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 );Mit der API von Kraken.io können Sie optimierte Bilder direkt in Ihrem S3 -Bucket, Cloud -Dateien -Container, Azure -Container oder Softlayer -Objektspeicher speichern. Mit nur ein paar zusätzlichen Parametern werden Ihre optimierten Bilder in kürzester Zeit in Ihren externen Speicher gebracht.
Obligatorische Parameter:
key - Ihr eindeutiger Amazon "Access Key ID".secret - Ihr einzigartiger Amazon "Secret Access Key".bucket - Name eines Zielcontainers auf Ihrem Amazon S3 -Konto.region -Name der Region Ihr S3-Eimer befindet sich. Dieses Feld ist obligatorisch, wenn sich die Region von der Standardeinstellung unterscheidet ( us-east-1 ). Die vollständige Liste der S3 -Regionen finden Sie hier.Optionale Parameter:
path - Zielpfad in Ihrem S3 -Bucket (z. B. "images/layout/header.jpg" ). Standardmäßig root "/" .acl - Berechtigungen eines Zielobjekts. Dies kann "public_read" oder "private" sein. Standardeinstellungen zu "public_read" . Die obigen Parameter müssen in einem s3_store -Schlüssel übergeben werden:
<?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 ); Das $data -Array enthält einen kraked_url -Schlüssel, der direkt auf die optimierte Datei in Ihrem Amazon S3 -Konto zeigt:
" kraked_url " => "http: //s3.amazonaws.com/YOUR_CONTAINER/path/to/file.jpg"Obligatorische Parameter:
user - Ihr Rackspace -Benutzername.key - Ihre eindeutige Cloud -Dateien -API -Schlüssel.container - Name eines Zielcontainers in Ihrem Cloud -Dateien -Konto.Optionale Parameter:
path - Zielpfad in Ihrem Container (z. B. "images/layout/header.jpg" ). Standardmäßig root "/" .ssl - Ein boolescher Wert ( true oder false ), der Kraken.io -API anweist, entweder SSL- oder Nicht -SSL -URL von Rackspace Cloudfiles zu holen. Standardeinstellungen zu false bedeutet, dass die Nicht-SSL-URL zurückgegeben wird. Die obigen Parameter müssen in einem cf_store -Schlüssel übergeben werden:
<?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 ); Wenn Ihr Container CDN-fähig ist, enthalten die Optimierungsergebnisse kraked_url , die direkt auf den optimierten Dateispeicherort in Ihrem Cloud-Dateien-Konto verweist, z. B.:
kraked_url => "http: //e9ffc04970a269a54eeb-cc00fdd2d4f11dffd931005c9e8de53a.r2.cf1.rackcdn.com/path/to/file.jpg" Wenn Ihr Container keine CDN-fähige optimierte Datei ist, wird in Ihrem CloudFiles-Konto sowieso gespeichert, aber die kraked_url verweist auf die optimierte Bild-URL in der Kraken.io-API-Speicherung:
kraked_url => "http: //dl.kraken.io/ecdfa5c55d5668b1b5fe9e420554c4ee/file.jpg"Obligatorische Parameter:
account - Ihr Azure -Speicherkonto.key - Ihr einzigartiger Azure -Speicherzugriffsschlüssel.container - Name eines Zielcontainers auf Ihrem Azure -Konto.Optionale Parameter:
path - Zielpfad in Ihrem Container (z. B. "images/layout/header.jpg" ). Standardmäßig root "/" . Die obigen Parameter müssen in einem Taste azure_store übergeben werden:
<?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 );Obligatorische Parameter:
user - Ihr Softlayer -Benutzername.key - Ihr Softlayer -API -Schlüssel.container - Name eines Zielcontainers auf Ihrem Softlayer -Konto.region sng01 Kurzname tok02 mil01 lon02 ams01 mel01 tor01 fra02 par01 mon01 sjc01 mex01 hkg02 syd01 dal05Optionale Parameter:
path - Zielpfad in Ihrem Container (z. B. "Bilder/Layout/Header.jpg"). Standardmäßig root "/".cdn_url - Ein boolescher Wert true oder false , das Kraken.io -API für eine öffentliche CDN -URL Ihrer optimierten Datei zurückgibt. Standardeinstellungen zu false bedeutet, dass die Nicht-CDN-URL zurückgegeben wird. Die obigen Parameter müssen in einem sl_store -Objekt übergeben werden:
<?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 ); Im Folgenden finden Sie ein Beispiel für eine vollständige JSON -Anforderung, die sl_store verwendet, um das optimierte Bild in Ihren Softlayer -Objektspeicher -Container zu drücken. Wir werden die URL -Option verwenden, um die API mit einer URL des Bildes zu füttern, um zu optimieren:
<?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 ); Wenn Ihr Softlayer-Container CDN-fähig ist und Sie "cdn_url": true Parameter kraked_url Ihrer JSON-Anfrage bestanden haben.
kraked_url => "http: //1c231.http.fra02.cdn.softlayer.net/images/layout/header.jpg" Wenn Ihr Container nicht CDN-fähig ist, zeigt kraked_url auf die optimierte Bild-URL in der Kraken.io-API:
kraked_url => "http: //dl.kraken.io/api/ecdfa5c55d5668b1b5fe9e420554c4ee/header.jpg" Copyright (C) 2013 - 2015 Nekkra UG
Die Erlaubnis wird hiermit einer Person, die eine Kopie dieser Software und zugehörigen Dokumentationsdateien (der "Software") erhält, kostenlos erteilt, um die Software ohne Einschränkung zu behandeln, einschließlich ohne Einschränkung der Rechte, zu verwenden, zu kopieren, zu modifizieren, zusammenzufassen, zu veröffentlichen, zu veröffentlichen, zu verteilen, zu verteilt, und/oder Kopien der Software zu ermöglichen, um Personen zu beanstanden, an denen die Software zugänglich ist, um die folgenden Bedingungen zu beantragen.
Die oben genannte Copyright -Mitteilung und diese Erlaubnisbekanntmachung müssen in alle Kopien oder wesentlichen Teile der Software enthalten sein.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Handelsfähigkeit, die Eignung für einen bestimmten Zweck und die Nichtverletzung. In keinem Fall sind die Autoren oder Urheberrechtsinhaber für Ansprüche, Schäden oder andere Haftungen haftbar, sei es in einer Vertragsklage, unerbittlich oder auf andere Weise, die sich aus oder im Zusammenhang mit der Software oder anderen Geschäften in der Software ergeben.