Esta é a biblioteca oficial do Kraken.io PHP, que deve ajudar os usuários a integrar rapidamente nossa otimização de imagens em seus projetos PHP. Kraken.io Otimizador de imagem.
Se você estiver usando o Composer, basta adicionar uma dependência do kraken-io/kraken-php ao arquivo composer.json do seu projeto. Aqui está um exemplo de dependência da versão 1.2:
{
"require" : {
"kraken-io/kraken-php" : " ^1.2 "
}
}Como alternativa, você também pode executar o seguinte comando no diretório raiz do seu projeto:
composer require kraken-io/kraken-php
Se você já tem git, a maneira mais fácil de baixar a biblioteca Kraken-php é com o comando git:
git clone git://github.com/kraken-io/kraken-php.git /path/to/include/kraken
Como alternativa, você pode baixar os arquivos PHP do Github e colocá -los no seu projeto PHP:
https://github.com/kraken-io/kraken-php/archive/master.zip
Primeiro, você precisa se inscrever na API Kraken.io e obter sua chave de API e segredo da API exclusiva. Você encontrará as duas credenciais da API. Depois de configurar sua conta, você pode começar a usar a API Kraken.io em seus aplicativos.
Lembre -se - nunca vincule a imagens otimizadas oferecidas para download. Você deve baixá -los primeiro e depois substituí -los em seus sites ou aplicativos. Por razões de segurança, imagens otimizadas estão disponíveis em nossos servidores por apenas uma hora .
Você pode otimizar suas imagens de duas maneiras - fornecendo um URL da imagem que deseja otimizar ou carregando um arquivo de imagem diretamente para a API Kraken.io.
A primeira opção (URL da imagem) é ótima para imagens que já estão em produção ou em qualquer outro lugar na Internet. O segundo (upload direto) é ideal para o seu processo de implantação, criar script ou o processamento on-the-fly dos uploads do seu usuário, onde você ainda não tem as imagens disponíveis on-line.
Kraken.io oferece duas opções para obter resultados de otimização. Com a opção wait Set, os resultados serão retornados imediatamente na resposta. Com a opção callback_url , os resultados serão publicados no URL especificado em sua solicitação.
Com a opção wait ligada para todas as solicitações à API, a conexão será mantida aberta até que a imagem seja otimizada. Quando isso for feito, você receberá uma resposta imediata com um objeto JSON que contém seus resultados de otimização. Para usar esta opção, basta definir "wait": true em sua solicitação.
Solicitar:
{
"auth" : {
"api_key" : "your-api-key" ,
"api_secret" : "your-api-secret"
} ,
"url" : "http://image-url.com/file.jpg" ,
"wait" : true
}Resposta
{
"success" : true ,
"file_name" : "file.jpg" ,
"original_size" : 324520 ,
"kraked_size" : 165358 ,
"saved_bytes" : 159162 ,
"kraked_url" : "http://dl.kraken.io/d1aacd2a2280c2ffc7b4906a09f78f46/file.jpg"
} Com o URL de retorno de chamada, a conexão HTTPS será encerrada imediatamente e um id exclusivo será retornado no corpo da resposta. Após a otimização, o Kraken.io publicará uma mensagem no callback_url especificado em sua solicitação. O ID da resposta refletirá o ID nos resultados publicados no seu URL de retorno de chamada.
Recomendamos o requestbin como uma maneira fácil de capturar resultados de otimização para testes iniciais.
Solicitar:
{
"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"
}Resposta:
{
"id" : "18fede37617a787649c3f60b9f1f280d"
}Resultados publicados no URL de retorno de chamada:
{
"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"
} O primeiro passo é autenticar a API Kraken.io, fornecendo sua chave de API e segredo exclusivo da API enquanto cria uma nova instância do Kraken.io:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " ); Para otimizar uma imagem, fornecendo a URL da imagem, use o método kraken.url() . Você precisará fornecer dois parâmetros obrigatórios em uma matriz - url para a imagem e 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 ); Dependendo de uma opção de resposta escolhida (URL de espera ou retorno de chamada) na matriz data você encontrará os resultados da ID de otimização ou de otimização contendo uma propriedade success , nome do arquivo, tamanho original do arquivo, tamanho do arquivo kraked, quantidade de economia e URL da imagem otimizada:
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 "
} Se você deseja fazer upload de suas imagens diretamente para o Kraken.io API, use o método kraken->upload() . Você precisará fornecer dois parâmetros obrigatórios em um file de matriz - que é o caminho absoluto para o arquivo e wait ou callback_url .
Na matriz $data você encontrará as mesmas propriedades de otimização que na opção url acima.
<?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 );Quando você decide sacrificar apenas uma pequena quantidade de qualidade da imagem (geralmente imperceptível ao olho humano), você poderá economizar até 90% do peso inicial do arquivo. A otimização com perdas fornecerá resultados excelentes com apenas uma fração da perda de qualidade da imagem.
Para usar otimizações com perdas, basta definir "lossy" => true em sua solicitação:
<?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 );As imagens PNG serão convertidas de 24 bits em paletted de 8 bits com canal alfa completo. Esse processo é chamado de quantização de PNG no formato RGBA e significa que a quantidade de cores usadas em uma imagem será reduzida para 256, mantendo todas as informações sobre a transparência alfa.
Para o otimizações de JPEG com perdas, o Kraken.io gerará várias cópias de uma imagem de entrada com configurações de qualidade diferentes. Em seguida, ele escolherá de maneira inteligente a da melhor qualidade para racionar. Isso garante que sua imagem JPEG tenha o menor tamanho com a maior qualidade possível, sem a necessidade de um humano selecionar a imagem ideal.
A opção de redimensionamento da imagem é ótima para criar miniaturas ou visualizar imagens em seus aplicativos. Kraken.io redimensionará primeiro a imagem fornecida e a otimizará com sua vasta gama de algoritmos de otimização. A opção resize precisa de alguns parâmetros a serem passados como width e/ou height desejada e uma propriedade strategy obrigatória. Por exemplo:
<?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 ); A propriedade strategy pode ter um dos seguintes valores:
exact - redimensione por largura/altura exata. Nenhuma proporção será mantida.portrait - a largura exata será definida, a altura será ajustada de acordo com a proporção.landscape - A altura exata será definida, a largura será ajustada de acordo com a proporção.auto - A melhor estratégia (retrato ou paisagem) será selecionada para uma determinada imagem de acordo com a proporção.fit - Esta opção cortará e redimensionará suas imagens para se ajustar à largura e altura desejadas.square - essa estratégia cortará primeiro a imagem por sua dimensão mais curta para torná -la um quadrado e depois redimensionará para o tamanho especificado.crop - Esta opção cortará sua imagem no tamanho exato que você especificará sem distorção.fill - Essa estratégia permite redimensionar a imagem para ajustar os limites especificados, preservando a proporção (assim como a estratégia automática). A propriedade de plano de fundo opcional permite especificar uma cor que será usada para preencher as partes não utilizadas dos limites especificados anteriormente. A propriedade em segundo plano pode ser formatada na notação hexadecimal #f60 ou #ff6600 , RGB RGB rgb(255, 0, 0) ou RGBA rgba(91, 126, 156, 0.7) . A cor padrão de fundo é branca.Mais informações sobre redimensionamento e corte de imagens podem ser encontradas na referência da API Kraken.io
O WebP é um novo formato de imagem introduzido pelo Google em 2010, que suporta compressão com perdas e sem perdas. De acordo com o Google, as imagens sem perda do Webp são 26% menores em tamanho em comparação com o PNGS e as imagens com perda de Webp são 25-34% menores em tamanho em comparação com imagens JPEG.
Para recomendar seus arquivos PNG ou JPEG no formato Webp, basta definir "webp": true sinalizador em sua solicitação JSON. Opcionalmente, você também pode definir "lossy": true sinalizador para aproveitar a compactação com perdas do 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 permite converter facilmente imagens diferentes de um tipo/formato em outro. Se, por exemplo, você gostaria de transformar seu arquivo PNG transparente em um JPEG com uma API de fundo cinza Kraken.io o cobriu.
Para converter entre diferentes tipos de imagem, você precisa adicionar um objeto convert extra para solicitar o JSON. Este objeto leva três propriedades:
format com o qual você especifica o tipo de arquivo em que você deseja que sua imagem seja convertida.background opcional, onde você pode especificar a cor de fundo ao converter de formatos de arquivo transparentes, como PNG e GIF, em um formato totalmente opaco, como o JPEG.keep_extension que permite manter intacta a extensão original do arquivo, independentemente do formato da imagem de saída.Parâmetros obrigatórios:
format - O formato da imagem em que você deseja converter sua imagem. Isso pode aceitar um dos seguintes valores: jpeg , png ou gif .Parâmetros opcionais:
background - Imagem de fundo ao converter de formatos de arquivo transparente, como PNG ou GIF, em formato totalmente opaco, como o JPEG. A propriedade em segundo plano pode ser passada na notação hexadecimal "#f60" ou "#ff6600" , rgb "rgb(255, 0, 0)" ou rgba "rgba(91, 126, 156, 0.7)" . A cor padrão de fundo é branca.keep_extension - Um valor booleano ( true ou false ) instruindo o Kraken.io API se a extensão original deve ou não ser mantida no nome do arquivo de saída. Por exemplo, ao converter "Image.jpg" em formato PNG com este sinalizador ativado no nome da imagem de saída ainda será "Image.jpg", mesmo que a imagem tenha sido convertida em um PNG. O valor padrão é false o que significa que a extensão correta sempre será definida. Por padrão, a API Kraken.io retirará todos os metadados encontrados em uma imagem para tornar o arquivo de imagem o mais pequeno possível e nos modos com perdas e sem perdas. Entradas como EXIF, XMP e IPTC, informações sobre perfil de cores etc. serão removidas completamente.
No entanto, existem situações em que você pode preservar algumas das meta -informações contidas na imagem, por exemplo, aviso de direitos autorais ou geotags. Para preservar as entradas de meta mais importantes, adicione uma matriz preserve_meta adicional à sua solicitação com um ou mais dos seguintes valores:
{
"preserve_meta" : [ "date" , "copyright" , "geotag" , "orientation" , "profile" ]
}profile - preservará o perfil de cores da ICC. Informações sobre perfil de cor da ICC adiciona inchaço desnecessário às imagens. No entanto, preservá -lo pode ser necessário em casos extremamente raros, onde a remoção dessas informações pode levar a uma alteração no brilho e/ou saturação do arquivo resultante.date - preservará a data da criação da imagem.copyright - preservará as entradas de direitos autorais.geotag - Preservará informações específicas de localização.orientation - preservará a marca de orientação (rotação).Exemplo de integração:
<?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 permite armazenar imagens otimizadas diretamente no seu balde S3, contêiner de arquivos em nuvem, contêiner do Azure ou contêiner de armazenamento de objetos do SoftLayer. Com apenas alguns parâmetros adicionais, suas imagens otimizadas serão empurradas para o seu armazenamento externo em pouco tempo.
Parâmetros obrigatórios:
key - sua Amazon exclusiva "ID da chave de acesso".secret - sua Amazon exclusiva "Chave de Acesso Secreto".bucket - Nome de um contêiner de destino na sua conta Amazon S3.region -Nome da região O seu balde S3 está localizado. Este campo é obrigatório se a região for diferente do padrão ( us-east-1 ). A lista completa das regiões S3 pode ser encontrada aqui.Parâmetros opcionais:
path - caminho de destino no seu balde S3 (por exemplo, "images/layout/header.jpg" ). Padrões para root "/" .acl - permissões de um objeto de destino. Isso pode ser "public_read" ou "private" . Padrões para "public_read" . Os parâmetros acima devem ser passados em uma tecla 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 ); A matriz $data conterá uma tecla kraked_url apontando diretamente para o arquivo otimizado na sua conta Amazon S3:
" kraked_url " => "http: //s3.amazonaws.com/YOUR_CONTAINER/path/to/file.jpg"Parâmetros obrigatórios:
user - seu nome de usuário do Rackspace.key - sua chave de API de arquivos de nuvem exclusiva.container - Nome de um contêiner de destino na sua conta de arquivos em nuvem.Parâmetros opcionais:
path - caminho de destino em seu contêiner (por exemplo, "images/layout/header.jpg" ). Padrões para root "/" .ssl - Um valor booleano ( true ou false ) instruindo a API Kraken.io a buscar URL SSL ou não -SSL do RackSpace Cloudfiles. Padrões para false significa que o URL não-SSL será retornado. Os parâmetros acima devem ser passados em uma tecla 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 ); Se o seu contêiner estiver habilitado para CD, os resultados da otimização conterão kraked_url , que apontam diretamente para o local otimizado do arquivo na sua conta de arquivos em nuvem, por exemplo:
kraked_url => "http: //e9ffc04970a269a54eeb-cc00fdd2d4f11dffd931005c9e8de53a.r2.cf1.rackcdn.com/path/to/file.jpg" Se o seu contêiner não estiver com o arquivo otimizado habilitado para CD, será armazenado em sua conta Cloudfiles de qualquer maneira, mas o kraked_url apontará para o URL da imagem otimizado no armazenamento da API Kraken.io:
kraked_url => "http: //dl.kraken.io/ecdfa5c55d5668b1b5fe9e420554c4ee/file.jpg"Parâmetros obrigatórios:
account - sua conta de armazenamento do Azure.key - sua chave de acesso ao armazenamento do Azure exclusivo.container - Nome de um contêiner de destino na sua conta do Azure.Parâmetros opcionais:
path - caminho de destino em seu contêiner (por exemplo, "images/layout/header.jpg" ). Padrões para root "/" . Os parâmetros acima devem ser passados em uma 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 obrigatórios:
user - seu nome de usuário do SoftLayer.key - sua chave da API do Softlayer.container - Nome de um contêiner de destino na sua conta do SoftLayer.region - Nome curto da região em que seu recipiente está localizado. Este pode ser um dos seguintes: syd01 lon02 mon01 dal05 tok02 tor01 hkg02 mex01 par01 fra02 mil01 sjc01 sng01 mel01 ams01Parâmetros opcionais:
path - caminho de destino em seu contêiner (por exemplo, "imagens/layout/header.jpg"). Padrões para root "/".cdn_url - Um valor booleano true ou false instruindo Kraken.io API a retornar um URL público de CDN do seu arquivo otimizado. Padrões para false significando o URL não CDN será devolvido. Os parâmetros acima devem ser passados em um 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 ); Abaixo, você pode encontrar um exemplo de uma solicitação JSON completa que usa sl_store para empurrar a imagem otimizada para o seu contêiner de armazenamento de objetos do Softlayer. Usaremos a opção URL para alimentar a API com um URL da imagem a ser otimizado:
<?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 ); Se o seu contêiner SoftLayer estiver habilitado para CDN e você passou "cdn_url": true em sua solicitação JSON, os resultados da otimização conterão kraked_url , que apontam diretamente para o local otimizado do arquivo no seu SoftLayer CDN, por exemplo:
kraked_url => "http: //1c231.http.fra02.cdn.softlayer.net/images/layout/header.jpg" Se o seu contêiner não for kraked_url habilitado para CD, apontará para o URL da imagem otimizado na API Kraken.io:
kraked_url => "http: //dl.kraken.io/api/ecdfa5c55d5668b1b5fe9e420554c4ee/header.jpg" Copyright (c) 2013 - 2015 Nekkra UG
A permissão é concedida, gratuita, a qualquer pessoa que obtenha uma cópia deste software e arquivos de documentação associados (o "software"), para lidar com o software sem restrição, inclusive sem limitação os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, mobilizar o software e/ou vender cópias do software e permitir que as pessoas a quem
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas as cópias ou em partes substanciais do software.
O software é fornecido "como está", sem garantia de qualquer tipo, expresso ou implícito, incluindo, entre outros, as garantias de comercialização, aptidão para uma finalidade específica e não innoculação. Em nenhum caso os autores ou detentores de direitos autorais serão responsáveis por qualquer reclamação, danos ou outro passivo, seja em uma ação de contrato, delito ou não, decorrente de, fora ou em conexão com o software ou o uso ou outras negociações no software.