Il s'agit de la bibliothèque officielle de Kraken.io PHP, qui devrait aider les utilisateurs à intégrer très rapidement notre optimisation d'image dans leurs projets PHP. Kraken.io Image Optimizer.
Si vous utilisez Composer, vous pouvez simplement ajouter une dépendance à kraken-io/kraken-php au fichier composer.json de votre projet. Voici un exemple de dépendance à la version 1.2:
{
"require" : {
"kraken-io/kraken-php" : " ^1.2 "
}
}Vous pouvez également exécuter la commande suivante dans le répertoire racine de votre projet:
composer require kraken-io/kraken-php
Si vous avez déjà Git, le moyen le plus simple de télécharger la bibliothèque Kraken-PhP est avec la commande git:
git clone git://github.com/kraken-io/kraken-php.git /path/to/include/kraken
Alternativement, vous pouvez télécharger les fichiers PHP à partir de GitHub et les placer dans votre projet PHP:
https://github.com/kraken-io/kraken-php/archive/master.zip
Vous devez d'abord vous inscrire à l'API Kraken.io et obtenir votre clé API et votre secret API uniques. Vous trouverez les deux sous les références API. Une fois que vous avez configuré votre compte, vous pouvez commencer à utiliser l'API Kraken.io dans vos applications.
N'oubliez pas - Ne jamais être lié à des images optimisées offertes à télécharger. Vous devez d'abord les télécharger, puis les remplacer dans vos sites Web ou applications. Pour des raisons de sécurité, des images optimisées sont disponibles sur nos serveurs pendant une heure seulement.
Vous pouvez optimiser vos images de deux manières - en fournissant une URL de l'image que vous souhaitez optimiser ou en téléchargeant un fichier image directement sur l'API Kraken.io.
La première option (URL d'image) est idéale pour les images qui sont déjà en production ou tout autre endroit sur Internet. Le second (téléchargement direct) est idéal pour votre processus de déploiement, votre script de construction ou le traitement à la volée des téléchargements de votre utilisateur où vous n'avez pas encore les images disponibles en ligne.
Kraken.io vous offre deux options pour récupérer les résultats d'optimisation. Avec l'option wait , les résultats seront renvoyés immédiatement dans la réponse. Avec l'option callback_url , les résultats seront publiés sur l'URL spécifiée dans votre demande.
Avec l'option wait activée pour chaque demande à l'API, la connexion sera ouverte jusqu'à ce que l'image soit optimisée. Une fois cela fait, vous obtiendrez une réponse immédiate avec un objet JSON contenant vos résultats d'optimisation. Pour utiliser cette option, définissez simplement "wait": true dans votre demande.
Demande:
{
"auth" : {
"api_key" : "your-api-key" ,
"api_secret" : "your-api-secret"
} ,
"url" : "http://image-url.com/file.jpg" ,
"wait" : true
}Réponse
{
"success" : true ,
"file_name" : "file.jpg" ,
"original_size" : 324520 ,
"kraked_size" : 165358 ,
"saved_bytes" : 159162 ,
"kraked_url" : "http://dl.kraken.io/d1aacd2a2280c2ffc7b4906a09f78f46/file.jpg"
} Avec l'URL de rappel, la connexion HTTPS sera terminée immédiatement et un id unique sera retourné dans le corps de réponse. Une fois l'optimisation, Kraken.io publiera un message au callback_url spécifié dans votre demande. L'ID dans la réponse reflétera l'ID dans les résultats publiés sur votre URL de rappel.
Nous recommandons RequestBin comme moyen facile de capturer les résultats d'optimisation pour les tests initiaux.
Demande:
{
"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"
}Réponse:
{
"id" : "18fede37617a787649c3f60b9f1f280d"
}Résultats publiés sur l'URL de rappel:
{
"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"
} La première étape consiste à s'authentifier à Kraken.io API en fournissant votre clé API et votre secret API uniques tout en créant une nouvelle instance Kraken.io:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " ); Pour optimiser une image en fournissant une URL d'image, utilisez la méthode kraken.url() . Vous devrez fournir deux paramètres obligatoires dans un tableau - url à l'image et wait ou 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 ); Selon une option de réponse choisie (URL d'attente ou de rappel) dans le tableau data , vous trouverez soit l'ID d'optimisation ou les résultats d'optimisation contenant une propriété success , le nom du fichier, la taille du fichier d'origine, la taille du fichier Krake, la quantité d'économies et l'URL d'image optimisée:
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 "
} Si vous souhaitez télécharger vos images directement sur l'API Kraken.io, utilisez la méthode kraken->upload() . Vous devrez fournir deux paramètres obligatoires dans un file Array - qui est le chemin d'accès absolu vers le fichier et wait ou callback_url .
Dans le tableau $data vous trouverez les mêmes propriétés d'optimisation qu'avec l'option url ci-dessus.
<?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 );Lorsque vous décidez de sacrifier juste une petite quantité de qualité d'image (généralement imperceptible à l'œil humain), vous pourrez économiser jusqu'à 90% du poids initial du fichier. L'optimisation avec perte vous donnera des résultats exceptionnels avec juste une fraction de la perte de qualité d'image.
Pour utiliser les optimisations avec perte, définissez simplement "lossy" => true dans votre demande:
<?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 );Les images PNG seront converties de 24 bits en 8 bits paleté avec un canal alpha complet. Ce processus est appelé quantification PNG au format RGBA et signifie que la quantité de couleurs utilisée dans une image sera réduite à 256 tout en conservant toutes les informations sur la transparence alpha.
Pour les optimisations JPEG avec perte, Kraken.io générera plusieurs copies d'une image d'entrée avec des paramètres de qualité différents. Il choisira ensuite intelligemment celui avec la meilleure qualité pour filer la ration. Cela garantit que votre image JPEG sera à la plus petite taille avec la qualité la plus élevée possible, sans avoir besoin d'un humain pour sélectionner l'image optimale.
L'option de redimensionnement d'images est idéale pour créer des miniatures ou prévisualiser des images dans vos applications. Kraken.io redimensionnera d'abord l'image donnée, puis l'optimisera avec son vaste tableau d'algorithmes d'optimisation. L'option resize a besoin de quelques paramètres à passer comme width et / ou height souhaitées et une propriété strategy obligatoire. Par exemple:
<?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 ); La propriété strategy peut avoir l'une des valeurs suivantes:
exact - redimensionner par largeur / hauteur exacte. Aucun rapport d'aspect ne sera maintenu.portrait - La largeur exacte sera définie, la hauteur sera ajustée en fonction du rapport d'aspect.landscape - La hauteur exacte sera définie, la largeur sera ajustée en fonction du rapport d'aspect.auto - La meilleure stratégie (portrait ou paysage) sera sélectionnée pour une image donnée en fonction du rapport d'aspect.fit - Cette option recadrera et redimensionnera vos images pour s'adapter à la largeur et à la hauteur souhaitées.square - Cette stratégie recadrera d'abord l'image par sa dimension plus courte pour en faire un carré, puis le redimensionnera à la taille spécifiée.crop - Cette option recadrera votre image à la taille exacte que vous spécifiez sans distorsion.fill - Cette stratégie vous permet de redimensionner l'image en fonction des limites spécifiées tout en préservant le rapport d'aspect (tout comme la stratégie automatique). La propriété d'arrière-plan en option vous permet de spécifier une couleur qui sera utilisée pour remplir les parties inutilisées des limites précédemment spécifiées. La propriété d'arrière-plan peut être formatée en notation hexagonale #f60 ou #ff6600 , RGB RGB rgb(255, 0, 0) ou RGBA rgba(91, 126, 156, 0.7) . La couleur d'arrière-plan par défaut est blanche.Plus d'informations sur le redimensionnement et la culture d'images peuvent être trouvés dans la référence de l'API Kraken.io
WebP est un nouveau format d'image introduit par Google en 2010 qui prend en charge la compression à perte et sans perte. Selon Google, les images WEBP sans perte sont de 26% de taille plus petite que les images PNGS et WebP avec perte de 25 à 34% plus petites par rapport aux images JPEG.
Pour récompenser vos fichiers PNG ou JPEG au format WebP, définissez simplement "webp": true indicateur dans votre demande JSON. Vous pouvez également éventuellement définir "lossy": true Flag pour tirer parti de la compression avec perte de 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 );L'API Kraken.io vous permet de convertir facilement différentes images d'un type / format à un autre. Si, par exemple, vous souhaitez transformer votre fichier PNG transparent en un JPEG avec un fond gris Kraken.io API que vous avez couvert.
Afin de convertir entre différents types d'images, vous devez ajouter un objet convert supplémentaire à votre demande de JSON. Cet objet prend trois propriétés:
format auquel vous spécifiez le type de fichier dans lequel vous souhaitez que votre image soit convertie.background facultative où vous pouvez spécifier la couleur d'arrière-plan lors de la conversion à partir de formats de fichiers transparents tels que PNG et GIF en format entièrement opaque tel que JPEG.keep_extension facultative qui vous permet de maintenir la l'extension de fichier d'origine intacte quel que soit le format d'image de sortie.Paramètres obligatoires:
format - Le format d'image dans lequel vous souhaitez convertir votre image. Cela peut accepter l'une des valeurs suivantes: jpeg , png ou gif .Paramètres facultatifs:
background - Image d'arrière-plan lors de la conversion des formats de fichiers transparents comme PNG ou GIF en format entièrement opaque comme JPEG. La propriété d'arrière-plan peut être transmise en notation hexagonale "#f60" ou "#ff6600" , RGB "rgb(255, 0, 0)" ou RGBA "rgba(91, 126, 156, 0.7)" . La couleur d'arrière-plan par défaut est blanche.keep_extension - Une valeur booléenne ( true ou false ) instruisant Kraken.io API Si l'extension d'origine doit être conservée ou non dans le nom de fichier de sortie. Par exemple, lors de la conversion de "Image.jpg" en format PNG avec ce drapeau, le nom de l'image de sortie sera toujours "Image.jpg" même si l'image a été convertie en PNG. La valeur par défaut est false signifiant que l'extension correcte sera toujours définie. Par défaut, l'API Kraken.io dépouillera toutes les métadonnées trouvées dans une image pour rendre le fichier image aussi petit que possible, et dans les modes avec perte et sans perte. Des entrées comme les balises EXIF, XMP et IPTC, les informations de profil de couleur, etc. seront complètement supprimées.
Cependant, il existe des situations où vous voudrez peut-être préserver certaines des méta-informations contenues dans l'image, par exemple, un avis de droit d'auteur ou des géotags. Afin de préserver les entrées de méta les plus importantes, ajoutez un tableau preserve_meta supplémentaire à votre demande avec une ou plusieurs des valeurs suivantes:
{
"preserve_meta" : [ "date" , "copyright" , "geotag" , "orientation" , "profile" ]
}profile - conservera le profil de couleur ICC. Les informations sur le profil de couleur ICC ajoutent un ballonnement inutile aux images. Cependant, la préserver peut être nécessaire dans des cas extrêmement rares où la suppression de ces informations pourrait entraîner un changement de luminosité et / ou de saturation du fichier résultant.date - Préservera la date de création d'images.copyright - conservera les entrées du droit d'auteur.geotag - conservera des informations spécifiques à l'emplacement.orientation - Préservera la marque d'orientation (rotation).Exemple d'intégration:
<?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 );L'API Kraken.io vous permet de stocker des images optimisées directement dans votre godet S3, votre conteneur de fichiers cloud, votre conteneur Azure ou votre conteneur de stockage d'objets SoftLayer. Avec seulement quelques paramètres supplémentaires, vos images optimisées seront poussées vers votre stockage externe en un rien de temps.
Paramètres obligatoires:
key - Votre Amazon unique "Access Key ID".secret - Votre "clé d'accès secrète" unique "unique.bucket - Nom d'un conteneur de destination sur votre compte Amazon S3.region - Nom de la région dans laquelle vous êtes situé dans votre seau S3. Ce champ est obligatoire si la région est différente de celle par défaut ( us-east-1 ). La liste complète des régions S3 peut être trouvée ici.Paramètres facultatifs:
path - chemin de destination dans votre seau S3 (par exemple "images/layout/header.jpg" ). Par défaut est root "/" .acl - Autorisations d'un objet de destination. Cela peut être "public_read" ou "private" . Par défaut "public_read" . Les paramètres ci-dessus doivent être passés dans une touche 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 ); Le tableau $data contiendra une clé kraked_url pointant directement le fichier optimisé de votre compte Amazon S3:
" kraked_url " => "http: //s3.amazonaws.com/YOUR_CONTAINER/path/to/file.jpg"Paramètres obligatoires:
user - Votre nom d'utilisateur RackSpace.key - Votre clé API de fichiers cloud unique.container - nom d'un conteneur de destination sur votre compte de fichiers cloud.Paramètres facultatifs:
path - chemin de destination dans votre conteneur (par exemple "images/layout/header.jpg" ). Par défaut est root "/" .ssl - Une valeur booléenne ( true ou false ) demandant à l'API Kraken.io de récupérer SSL ou URL non SSL de RackSpace CloudFiles. Par défaut, false signifiant que l'URL non SSL sera renvoyée. Les paramètres ci-dessus doivent être passés dans une touche 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 ); Si votre conteneur est compatible CDN, les résultats de l'optimisation contiendront kraked_url qui pointe directement à l'emplacement du fichier optimisé dans votre compte de fichiers cloud, par exemple:
kraked_url => "http: //e9ffc04970a269a54eeb-cc00fdd2d4f11dffd931005c9e8de53a.r2.cf1.rackcdn.com/path/to/file.jpg" Si votre conteneur n'est pas un fichier optimisé compatible CDN sera stocké dans votre compte CloudFiles de toute façon, mais le kraked_url pointera vers l'URL d'image optimisé dans le stockage de l'API Kraken.io:
kraked_url => "http: //dl.kraken.io/ecdfa5c55d5668b1b5fe9e420554c4ee/file.jpg"Paramètres obligatoires:
account - Votre compte de stockage Azure.key - Votre clé d'accès au stockage Azure unique.container - nom d'un conteneur de destination sur votre compte Azure.Paramètres facultatifs:
path - chemin de destination dans votre conteneur (par exemple "images/layout/header.jpg" ). Par défaut est root "/" . Les paramètres ci-dessus doivent être passés dans une touche 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 );Paramètres obligatoires:
user - Votre nom d'utilisateur SoftLayer.key - Votre clé API SoftLayer.container - nom d'un conteneur de destination sur votre compte SoftLayer.region tok02 mex01 dal05 lon02 hkg02 syd01 tor01 mon01 fra02 par01 mil01 sjc01 sng01 mel01 ams01Paramètres facultatifs:
path - chemin de destination dans votre conteneur (par exemple "Images / Layout / Header.jpg"). Par défaut est root "/".cdn_url - Une valeur booléenne true ou false Instruire Kraken.io API pour renvoyer une URL CDN publique de votre fichier optimisé. Par défaut, false signifiant que l'URL non-CDN sera renvoyée. Les paramètres ci-dessus doivent être passés dans un objet 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 ); Vous trouverez ci-dessous un exemple de demande JSON complète qui utilise sl_store pour pousser l'image optimisée dans votre conteneur de stockage d'objets SoftLayer. Nous utiliserons l'option URL pour alimenter l'API avec une URL d'image à optimiser:
<?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 ); Si votre conteneur Softlayer est compatible CDN et que vous avez passé "cdn_url": true dans votre demande JSON, les résultats d'optimisation contiendront kraked_url qui pointe directement vers l'emplacement de fichier optimisé dans votre CDN Softlayer, par exemple:
kraked_url => "http: //1c231.http.fra02.cdn.softlayer.net/images/layout/header.jpg" Si votre conteneur n'est pas kraked_url compatible CDN pointera vers l'URL d'image optimisée dans l'API Kraken.io:
kraked_url => "http: //dl.kraken.io/api/ecdfa5c55d5668b1b5fe9e420554c4ee/header.jpg" Copyright (c) 2013 - 2015 Nekkra UG
L'autorisation est accordée gratuitement à toute personne qui obtient une copie de ce logiciel et des fichiers de documentation associés (le "logiciel"), pour traiter le logiciel sans restriction, y compris sans limiter les droits d'utilisation, de copie, de modification, de fusion, de publication, de distribution, de sublince et / ou de vendre des copies des conditions suivantes.
L'avis de droit d'auteur ci-dessus et le présent avis d'autorisation sont inclus dans toutes les copies ou des parties substantielles du logiciel.
Le logiciel est fourni "tel quel", sans garantie d'aucune sorte, express ou implicite, y compris, mais sans s'y limiter, les garanties de qualité marchande, d'adéquation à un usage particulier et de non-contrefaçon. En aucun cas, les auteurs ou les titulaires de droits d'auteur ne seront pas responsables de toute réclamation, dommage ou autre responsabilité, que ce soit dans une action de contrat, de délit ou autre, découlant de, ou en relation avec le logiciel ou l'utilisation ou d'autres transactions dans le logiciel.