Esta es la biblioteca oficial de Kraken.io PHP, que debería ayudar a los usuarios a integrar rápidamente nuestra optimización de imágenes en sus proyectos PHP. Kraken.io Optimizador de imágenes.
Si está utilizando Composer, simplemente puede agregar una dependencia de kraken-io/kraken-php al archivo composer.json de su proyecto. Aquí hay un ejemplo de dependencia de la versión 1.2:
{
"require" : {
"kraken-io/kraken-php" : " ^1.2 "
}
}Alternativamente, también puede ejecutar el siguiente comando en el directorio raíz de su proyecto:
composer require kraken-io/kraken-php
Si ya tiene GIT, la forma más fácil de descargar la biblioteca Kraken-PHP es con el comando git:
git clone git://github.com/kraken-io/kraken-php.git /path/to/include/kraken
Alternativamente, puede descargar los archivos PHP de GitHub y colocarlos dentro de su proyecto PHP:
https://github.com/kraken-io/kraken-php/archive/master.zip
Primero debe registrarse en la API Kraken.io y obtener su clave API única y su secreto API . Encontrará ambos bajo credenciales de API. Una vez que haya configurado su cuenta, puede comenzar a usar la API Kraken.io en sus aplicaciones.
Recuerde: nunca enlace a imágenes optimizadas ofrecidas para descargar. Primero debe descargarlos y luego reemplazarlos en sus sitios web o aplicaciones. Debido a las razones de seguridad, las imágenes optimizadas están disponibles en nuestros servidores solo durante una hora .
Puede optimizar sus imágenes de dos maneras, proporcionando una URL de la imagen que desea optimizar o cargando un archivo de imagen directamente a la API Kraken.io.
La primera opción (URL de imagen) es ideal para imágenes que ya están en producción o en cualquier otro lugar en Internet. El segundo (carga directa) es ideal para su proceso de implementación, creación de script o el procesamiento sobre la marcha de las cargas de su usuario donde aún no tiene las imágenes disponibles en línea.
Kraken.io le ofrece dos opciones para obtener resultados de optimización. Con la opción wait establecida, los resultados se devolverán inmediatamente en la respuesta. Con la opción callback_url establecido, los resultados se publicarán en la URL especificada en su solicitud.
Con la opción wait activada para cada solicitud a la API, la conexión se mantendrá abierta hasta que la imagen haya sido optimizada. Una vez hecho esto, obtendrá una respuesta inmediata con un objeto JSON que contiene sus resultados de optimización. Para usar esta opción, simplemente establezca "wait": true en su solicitud.
Pedido:
{
"auth" : {
"api_key" : "your-api-key" ,
"api_secret" : "your-api-secret"
} ,
"url" : "http://image-url.com/file.jpg" ,
"wait" : true
}Respuesta
{
"success" : true ,
"file_name" : "file.jpg" ,
"original_size" : 324520 ,
"kraked_size" : 165358 ,
"saved_bytes" : 159162 ,
"kraked_url" : "http://dl.kraken.io/d1aacd2a2280c2ffc7b4906a09f78f46/file.jpg"
} Con la URL de devolución de llamada, la conexión HTTPS finalizará de inmediato y se devolverá una id única en el cuerpo de respuesta. Después de que la optimización haya terminado, Kraken.io publicará un mensaje en el callback_url especificado en su solicitud. La identificación en la respuesta reflejará la ID en los resultados publicados en su URL de devolución de llamada.
Recomendamos requestbin como una forma fácil de capturar los resultados de optimización para las pruebas iniciales.
Pedido:
{
"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"
}Respuesta:
{
"id" : "18fede37617a787649c3f60b9f1f280d"
}Resultados publicados en la URL de devolución de llamada:
{
"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"
} El primer paso es autenticarse a la API Kraken.io proporcionando su clave API única y secreto API mientras crea una nueva instancia de Kraken.io:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " ); Para optimizar una imagen proporcionando URL de imagen, use el método kraken.url() . Deberá proporcionar dos parámetros obligatorios en una matriz: url a la imagen y wait o 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 ); Dependiendo de una opción de respuesta elegida (URL de espera o devolución de llamada) en la matriz data , encontrará los resultados de la ID de optimización o la optimización que contiene una propiedad success , nombre del archivo, tamaño de archivo original, tamaño de archivo Kraked, cantidad de ahorros y URL de imagen optimizada:
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 desea cargar sus imágenes directamente en la API Kraken.io, use el método kraken->upload() . Deberá proporcionar dos parámetros obligatorios en una matriz - file , que es la ruta absoluta al archivo y wait o callback_url .
En la matriz $data encontrará las mismas propiedades de optimización que con la opción url anterior.
<?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 );Cuando decida sacrificar solo una pequeña cantidad de calidad de imagen (generalmente imposible del ojo humano), podrá ahorrar hasta el 90% del peso del archivo inicial. La optimización con pérdida le dará resultados sobresalientes con solo una fracción de pérdida de calidad de imagen.
Para usar optimizaciones con pérdida, simplemente establezca "lossy" => true en su solicitud:
<?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 );Las imágenes PNG se convertirán de 24 bits a paletas de 8 bits con canal alfa completo. Este proceso se llama cuantización PNG en formato RGBA y significa que la cantidad de colores utilizados en una imagen se reducirá a 256 mientras se mantiene toda la información sobre la transparencia alfa.
Para las optimizaciones JPEG de pérdida, Kraken.io generará múltiples copias de una imagen de entrada con una configuración de calidad diferente. Luego elegirá de manera inteligente la que tiene la mejor calidad para filmar ración. Esto asegura que su imagen JPEG esté en el tamaño más pequeño con la calidad más alta posible, sin la necesidad de que un humano seleccione la imagen óptima.
La opción de cambio de tamaño de imagen es excelente para crear miniaturas o imágenes de vista previa en sus aplicaciones. Kraken.io primero cambiará el tamaño de la imagen dada y luego la optimizará con su amplia variedad de algoritmos de optimización. La opción resize necesita algunos parámetros para pasar como width y/o height deseados y una propiedad strategy obligatoria. Por ejemplo:
<?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 propiedad strategy puede tener uno de los siguientes valores:
exact : cambiar el tamaño de ancho/altura exacta. No se mantendrá ninguna relación de aspecto.portrait : se establecerá un ancho exacto, la altura se ajustará de acuerdo con la relación de aspecto.landscape : se establecerá altura exacta, el ancho se ajustará de acuerdo con la relación de aspecto.auto : la mejor estrategia (retrato o paisaje) se seleccionará para una imagen dada de acuerdo con la relación de aspecto.fit : esta opción recortará y cambiará el tamaño de sus imágenes para que se ajusten al ancho y la altura deseados.square : esta estrategia primero recortará la imagen por su dimensión más corta para que sea un cuadrado, luego cambiará el tamaño al tamaño especificado.crop : esta opción recortará su imagen al tamaño exacto que especifique sin distorsión.fill : esta estrategia le permite cambiar el tamaño de la imagen para que se ajuste a los límites especificados al tiempo que preserva la relación de aspecto (al igual que la estrategia automática). La propiedad de fondo opcional le permite especificar un color que se utilizará para llenar las partes no utilizadas de los límites especificados previamente. La propiedad de fondo se puede formatear en la notación hexadecimal #f60 o #ff6600 , RGB RGB rgb(255, 0, 0) o RGBA rgba(91, 126, 156, 0.7) . El color de fondo predeterminado es el blanco.Se puede encontrar más información sobre el cambio de tamaño y el cultivo de imágenes en la referencia de la API de Kraken.io
WebP es un nuevo formato de imagen introducido por Google en 2010 que admite la compresión de pérdida y sin pérdida. Según Google, las imágenes sin pérdidas de WebP son 26% más pequeñas en tamaño en comparación con los PNG y las imágenes de WEBP Los pérdida son 25-34% más pequeños en tamaño en comparación con las imágenes JPEG.
Para recompensar sus archivos PNG o JPEG en el formato WebP, simplemente establezca "webp": true indicador en su solicitud JSON. También puede establecer opcionalmente "lossy": true indicador para aprovechar la compresión con pérdida 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 );La API de Kraken.io le permite convertir fácilmente diferentes imágenes de un tipo/formato a otro. Si, por ejemplo, desea convertir su archivo PNG transparente en un JPEG con un fondo gris Kraken.io API lo tiene cubierto.
Para convertir entre diferentes tipos de imágenes, debe agregar un objeto convert adicional a su solicitud JSON. Este objeto toma tres propiedades:
format con el que especifica el tipo de archivo en el que desea que se convierta su imagen.background opcional donde puede especificar el color de fondo al convertir desde formatos de archivo transparentes como PNG y GIF en un formato completamente opaco como JPEG.keep_extension que le permite mantener intacta la extensión del archivo original independientemente del formato de imagen de salida.Parámetros obligatorios:
format : el formato de imagen en el que desea convertir su imagen. Esto puede aceptar uno de los siguientes valores: jpeg , png o gif .Parámetros opcionales:
background : imagen de fondo al convertir desde formatos de archivo transparente como PNG o GIF en formato completamente opaco como JPEG. La propiedad de fondo se puede pasar en notación hexadecimal "#f60" o "#ff6600" , RGB "rgb(255, 0, 0)" o RGBA "rgba(91, 126, 156, 0.7)" . El color de fondo predeterminado es el blanco.keep_extension : un valor booleano ( true o false ) que instruye a la API Kraken.io si la extensión original debe mantenerse o no en el nombre de archivo de salida. Por ejemplo, al convertir "Image.jpg" en formato PNG con este indicador activado el nombre de la imagen de salida seguirá siendo "Image.jpg" a pesar de que la imagen se ha convertido en un PNG. El valor predeterminado es false lo que significa que la extensión correcta siempre se establecerá. Por defecto, la API de Kraken.io despojará todos los metadatos que se encuentran en una imagen para hacer que el archivo de imagen sea lo más pequeño posible, y en los modos con pérdida y sin pérdidas. Las entradas como EXIF, XMP e IPTC etiquetas, información de perfil de color, etc. serán despojadas por completo.
Sin embargo, hay situaciones en las que es posible que desee preservar parte de la meta información contenida en la imagen, por ejemplo, aviso de derechos de autor o geotags. Para preservar las entradas meta más importantes, agregue una matriz preserve_meta adicional a su solicitud con uno o más de los siguientes valores:
{
"preserve_meta" : [ "date" , "copyright" , "geotag" , "orientation" , "profile" ]
}profile : preservará el perfil de color ICC. La información del perfil de color ICC agrega hinchazón innecesario a las imágenes. Sin embargo, preservarlo puede ser necesario en casos extremadamente raros donde eliminar esta información podría conducir a un cambio en el brillo y/o la saturación del archivo resultante.date : preservará la fecha de creación de imágenes.copyright : preservará las entradas de derechos de autor.geotag : preservará la información específica de la ubicación.orientation - preservará la marca de orientación (rotación).Ejemplo de integración:
<?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 );La API de Kraken.io le permite almacenar imágenes optimizadas directamente en su cubo S3, contenedor de archivos en la nube, contenedor Azure o contenedor de almacenamiento de objetos SoftLayer. Con solo unos pocos parámetros adicionales, sus imágenes optimizadas se empujarán a su almacenamiento externo en poco tiempo.
Parámetros obligatorios:
key : su "ID de clave de acceso" de Amazon única.secret : su exclusiva "clave de acceso secreto" de Amazon.bucket : nombre de un contenedor de destino en su cuenta de Amazon S3.region : nombre de la región en su cubo S3 se encuentra. Este campo es obligatorio si la región es diferente de la predeterminada ( us-east-1 ). La lista completa de regiones S3 se puede encontrar aquí.Parámetros opcionales:
path - ruta de destino en su cubo S3 (por ejemplo, "images/layout/header.jpg" ). El valor predeterminado a la raíz "/" .acl - Permisos de un objeto de destino. Esto puede ser "public_read" o "private" . El valor predeterminado es "public_read" . Los parámetros anteriores deben pasar en una clave 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 ); La matriz $data contendrá una clave kraked_url que apunta directamente al archivo optimizado en su cuenta de Amazon S3:
" kraked_url " => "http: //s3.amazonaws.com/YOUR_CONTAINER/path/to/file.jpg"Parámetros obligatorios:
user : su nombre de usuario Rackspace.key : su clave API de archivos en la nube único.container : nombre de un contenedor de destino en su cuenta de archivos en la nube.Parámetros opcionales:
path - ruta de destino en su contenedor (por ejemplo, "images/layout/header.jpg" ). El valor predeterminado a la raíz "/" .ssl : un valor booleano ( true o false ) que le indica a la API Kraken.io que obtenga una URL SSL o no SSL de Rackspace CloudFiles. El valor predeterminado es false significado, se devolverá la URL que no es SSL. Los parámetros anteriores deben pasar en una clave 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 su contenedor está habilitado para CDN, los resultados de optimización contendrán kraked_url que apunta directamente a la ubicación de archivo optimizado en su cuenta de archivos en la nube, por ejemplo:
kraked_url => "http: //e9ffc04970a269a54eeb-cc00fdd2d4f11dffd931005c9e8de53a.r2.cf1.rackcdn.com/path/to/file.jpg" Si su contenedor no está habilitado para CDN, el archivo optimizado se almacenará en su cuenta CloudFiles de todos modos, pero el kraked_url apuntará a la URL de imagen optimizada en el almacenamiento de la API de Kraken.io:
kraked_url => "http: //dl.kraken.io/ecdfa5c55d5668b1b5fe9e420554c4ee/file.jpg"Parámetros obligatorios:
account : su cuenta de almacenamiento de Azure.key : su clave de acceso de almacenamiento Azure único.container : nombre de un contenedor de destino en su cuenta de Azure.Parámetros opcionales:
path - ruta de destino en su contenedor (por ejemplo, "images/layout/header.jpg" ). El valor predeterminado a la raíz "/" . Los parámetros anteriores deben pasar en una tecla 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 );Parámetros obligatorios:
user : su nombre de usuario SoftLayer.key : tu tecla API SoftLayer.container : nombre de un contenedor de destino en su cuenta SoftLayer.region - Nombre corto de la región En su contenedor se encuentra. Este puede ser uno de los siguientes: syd01 lon02 mon01 dal05 tok02 tor01 hkg02 mex01 par01 fra02 mil01 sjc01 sng01 mel01 ams01Parámetros opcionales:
path - ruta de destino en su contenedor (por ejemplo, "imágenes/diseño/header.jpg"). El valor predeterminado a la raíz "/".cdn_url : un valor booleano true o false que instruye a la API Kraken.io que devuelva una URL pública de CDN de su archivo optimizado. El valor predeterminado es false significado que se devolverá la URL que no es CDN. Los parámetros anteriores deben pasar en un objeto 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 ); A continuación, puede encontrar un ejemplo de una solicitud JSON completa que usa sl_store para empujar la imagen optimizada en su contenedor de almacenamiento de objetos SoftLayer. Utilizaremos la opción URL para alimentar la API con una URL de imagen para optimizar:
<?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 su contenedor SoftLayer está habilitado para CDN y ha pasado "cdn_url": true en su solicitud JSON Los resultados de optimización contendrán kraked_url que apunta directamente a la ubicación de archivo optimizado en su CDN SoftLayer, por ejemplo:
kraked_url => "http: //1c231.http.fra02.cdn.softlayer.net/images/layout/header.jpg" Si su contenedor no está habilitado para CDN, kraked_url señalará la URL de imagen optimizada en la API Kraken.io:
kraked_url => "http: //dl.kraken.io/api/ecdfa5c55d5668b1b5fe9e420554c4ee/header.jpg" Copyright (c) 2013 - 2015 Nekkra UG
El permiso se otorga, de forma gratuita, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "software"), para tratar el software sin restricción, incluidos los derechos de los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicensa y/o vender copias del software, y para permitir que las personas a quienes se les proporciona el software para que lo haga, sujeto a las siguientes condiciones: las siguientes condiciones: las siguientes condiciones: las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o porciones sustanciales del software.
El software se proporciona "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otros, las garantías de comerciabilidad, idoneidad para un propósito particular y no infracción. En ningún caso los autores o titulares de derechos de autor serán responsables de cualquier reclamo, daños u otra responsabilidad, ya sea en una acción de contrato, agravio o de otra manera, que surge, de o en relación con el software o el uso u otros tratos en el software.