Это официальная библиотека PHP Kraken.io, которая должна помочь пользователям очень быстро интегрировать нашу оптимизацию изображений в свои проекты PHP. Kraken.io Оптимизатор изображения.
Если вы используете композитор, вы можете просто добавить зависимость от 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
В качестве альтернативы, вы можете загрузить файлы PHP с GitHub и поместить их в свой PHP -проект:
https://github.com/kraken-io/kraken-php/archive/master.zip
Сначала вам нужно подписаться на API Kraken.io и получить свой уникальный ключ API и секрет API . Вы найдете оба по учетным данным API. После того, как вы настроили свою учетную запись, вы можете начать использовать API kraken.io в своих приложениях.
Помните - никогда не ссылайтесь на оптимизированные изображения, предлагаемые для загрузки. Сначала вы должны загрузить их, а затем заменить их на своих веб -сайтах или приложениях. Из -за соображений безопасности оптимизированные изображения доступны на наших серверах только в течение одного часа .
Вы можете оптимизировать свои изображения двумя способами - предоставив URL -адрес изображения, которое вы хотите оптимизировать, или загрузив файл изображения непосредственно на API Kraken.io.
Первый вариант (изображение URL) отлично подходит для изображений, которые уже находятся в производстве или любое другое место в Интернете. Второй (прямая загрузка) идеально подходит для вашего процесса развертывания, сценария построения или обработки загрузки вашего пользователя, где у вас еще нет изображений, доступных в Интернете.
Kraken.io дает вам два варианта получения результатов оптимизации. При установке опции wait результаты будут возвращены немедленно в ответе. С помощью параметра callback_url Установите результаты, результаты будут размещены на URL, указанный в вашем запросе.
При включении опции wait для каждого запроса в API соединение будет открыто до оптимизированного изображения. Как только это будет сделано, вы получите немедленный ответ с объектом 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 , указанный в вашем запросе. Идентификатор в ответе будет отражать идентификатор в результатах, опубликованных в вашем URL -адресе обратного вызова.
Мы рекомендуем 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"
} Первый шаг - аутентификация в API Kraken.io, предоставив ваш уникальный ключ API и секрет API, создавая новый экземпляр Kraken.io:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " ); Чтобы оптимизировать изображение, предоставив URL -адрес изображение, используйте метод kraken.url() . Вам нужно будет предоставить два обязательных параметра в массиве - 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 ); В зависимости от выбранного параметра ответа (wating или callback URL) в массиве data вы найдете либо идентификатор оптимизации, либо результаты оптимизации, содержащие свойство success , имя файла, исходный размер файла, размер файла крик, количество сбережений и оптимизированный URL -адрес:
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 "
} Если вы хотите загрузить свои изображения непосредственно в API Kraken.io, используйте метод kraken->upload() . Вам необходимо будет предоставить два обязательных параметра в массиве - file , который является абсолютным путем к файлу и 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% от первоначального веса файла. Оптимизация потеря даст вам выдающиеся результаты с лишь частью потери качества изображения.
Для использования оптимизации с потерями просто установите "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-битный 8-битный с полным альфа-каналом. Этот процесс называется квантованием PNG в формате RGBA и означает количество цветов, используемых в изображении, будет уменьшено до 256 при сохранении всей информации о прозрачности альфа.
Для Oringy JPEG Optimizations 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 - эта стратегия позволяет вам изменять размер изображения, чтобы соответствовать указанным границам при сохранении соотношения сторон (точно так же, как стратегия автоматического). Необязательное фоновое свойство позволяет указать цвет, который будет использоваться для заполнения неиспользованных частей ранее указанных границ. Фоновое свойство может быть отформатировано в шестнадцатеричной нотации #f60 или #ff6600 , RGB rgb(255, 0, 0) или RGBA rgba(91, 126, 156, 0.7) . Цвет фона по умолчанию белый.Больше информации об изменении размера и обрезки изображений можно найти в ссылке на API Kraken.io API
WebP - это новый формат изображений, введенный Google в 2010 году, который поддерживает как сжатие, так и сжатие без потерь. Согласно Google, изображения без потерь Webp имеют размеры на 26% меньше по сравнению с изображениями PNG, а Webp Lossy- на 25-34% меньше по размеру по сравнению с изображениями JPEG.
Чтобы повторить ваши файлы PNG или JPEG в формат WebP, просто установите "webp": true Flag в вашем запросе JSON. Вы также можете при желании установить "lossy": true Flag для использования сжатия Webp's Lisingy:
<?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 );API Kraken.io позволяет легко преобразовать разные изображения из одного типа/формата в другой. Если, например, вы хотели бы превратить свой прозрачный файл PNG в JPEG с серым фоном Kraken.io API, который вы покрыли.
Чтобы преобразовать между различными типами изображений, вам необходимо добавить дополнительный объект convert в запрос JSON. Этот объект занимает три свойства:
format , в котором вы указываете тип файла, в который вы хотите преобразовать ваше изображение.background свойство, где вы можете указать цвет фона при преобразовании из прозрачных форматов файлов, таких как PNG и GIF в полностью непрозрачный формат, такой как JPEG.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 - логическое значение ( true или false ) инструктирует API kraken.io, следует ли хранить исходное расширение в выходном имени файла. Например, при преобразовании «image.jpg» в формат PNG с этим флагом включил выходной имени изображения все еще будет «image.jpg», даже если изображение было преобразовано в PNG. Значение по умолчанию является false , означающее, что правильное расширение всегда будет установлено. По умолчанию kraken.io API лишит все метаданные, найденные в изображении , чтобы сделать файл изображения максимально небольшим, насколько это возможно, и в режимах как потерь, так и в режимах без потерь. Такие записи, как Exif, XMP и IPTC -теги, информация о цветовом профиле и т. Д., Будут вообще лишены.
Однако существуют ситуации, когда вы можете сохранить часть мета -информации, содержащейся на изображении, например, уведомление об авторском праве или геотаги. Чтобы сохранить наиболее важные записи мета. Добавьте дополнительный массив 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 );API kraken.io позволяет сохранять оптимизированные изображения непосредственно в вашем ковше S3, контейнере для облачных файлов, контейнере Azure или софтореклассником. С лишь несколькими дополнительными параметрами ваши оптимизированные изображения будут направлены на ваше внешнее хранилище в кратчайшие сроки.
Обязательные параметры:
key - ваш уникальный Amazon "ID ключа".secret - ваш уникальный Amazon «Ключ секретного доступа».bucket - Название контейнера назначения на вашей учетной записи Amazon S3.region -название региона, в котором находится ваше ведро S3. Это поле обязательно, если область отличается от по умолчанию ( us-east-1 ). Полный список регионов S3 можно найти здесь.Дополнительные параметры:
path - Путь назначения в ведре S3 (например "images/layout/header.jpg" ). По умолчанию корень "/" .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 будет содержать клавишу kraked_url , указывающий непосредственно на оптимизированный файл в вашей учетной записи Amazon S3:
" kraked_url " => "http: //s3.amazonaws.com/YOUR_CONTAINER/path/to/file.jpg"Обязательные параметры:
user - ваше имя пользователя Rackspace.key - ваш уникальный клавиш API облачных файлов.container - Имя контейнера назначения в вашей учетной записи Cloud Files.Дополнительные параметры:
path - Путь назначения в вашем контейнере (например "images/layout/header.jpg" ). По умолчанию корень "/" .ssl - логическое значение ( true или false ) инструктирует chaken.io api для извлечения либо SSL, либо не SSL URL из Rackspace Cloudfiles. По умолчанию 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 , который указывает непосредственно на оптимизированное местоположение файла в вашей учетной записи Cloud Files, например:
kraked_url => "http: //e9ffc04970a269a54eeb-cc00fdd2d4f11dffd931005c9e8de53a.r2.cf1.rackcdn.com/path/to/file.jpg" Если ваш контейнер не является оптимизированным файлом с поддержкой CDN в любом случае в вашей учетной записи CloudFiles, но kraked_url будет указывать на оптимизированный URL-адрес изображения в хранилище API Kraken.io:
kraked_url => "http: //dl.kraken.io/ecdfa5c55d5668b1b5fe9e420554c4ee/file.jpg"Обязательные параметры:
account - ваша учетная запись Azure Storage.key - ваш уникальный ключ доступа к хранилищу Azure.container - название контейнера назначения на вашей учетной записи Azure.Дополнительные параметры:
path - Путь назначения в вашем контейнере (например "images/layout/header.jpg" ). По умолчанию корень "/" . Приведенные выше параметры должны быть переданы в ключ 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 - ваше имя пользователя Softlayer.key - ваш ключ API Softlayer.container - название контейнера назначения на вашей учетной записи Softlayer.region dal05 tor01 syd01 fra02 mex01 mon01 tok02 hkg02 lon02 mil01 par01 sjc01 sng01 mel01 ams01Дополнительные параметры:
path - Путь назначения в вашем контейнере (например, «Images/Mayout/Header.jpg»). По умолчанию корень "/".cdn_url - логическое значение true или false инструктируют chaken.io api, чтобы вернуть публичный URL CDN вашего оптимизированного файла. По умолчанию 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 ); Ниже вы можете найти пример полного запроса JSON, который использует sl_store , чтобы выдвинуть оптимизированное изображение в контейнер для хранения объектов SoftLayer. Мы будем использовать опцию 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 параметр в вашем запросе JSON, результаты оптимизации будут содержать kraked_url , который указывает непосредственно на оптимизированное местоположение файла в вашем SoftLayer CDN, например: Например:
kraked_url => "http: //1c231.http.fra02.cdn.softlayer.net/images/layout/header.jpg" Если ваш контейнер не включен в поддержку CDN kraked_url , укажет на оптимизированный URL изображения в API Kraken.io:
kraked_url => "http: //dl.kraken.io/api/ecdfa5c55d5668b1b5fe9e420554c4ee/header.jpg" Copyright (C) 2013 - 2015 Nekkra UG
Настоящим дается разрешение, бесплатно, любому лицу, получающему копию этого программного обеспечения и связанные с ними файлы документации («Программное обеспечение»), чтобы иметь дело в программном обеспечении без ограничений, включая, без ограничения, права на использование, копирование, изменение, объединение, публикацию, распределение, сублиценность и/или продавать копии программного обеспечения и разрешения лиц, на которые программное обеспечение подходит для того, чтобы поступить так, чтобы поступить на следующие условия: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: на следующие условия: к следующим условиям: на следующие условия: на следующие условия.
Вышеуказанное уведомление об авторском праве и это уведомление о разрешении должно быть включено во все копии или существенные части программного обеспечения.
Программное обеспечение предоставляется «как есть», без гарантии любого рода, явного или подразумеваемого, включая, помимо прочего, гарантии товарной пригодности, пригодности для определенной цели и несоответствия. Ни в коем случае авторы или владельцы авторских прав не будут нести ответственность за любые претензии, убытки или другую ответственность, будь то в действии контракта, деликт или иным образом, возникающие из или в связи с программным обеспечением или использованием или другими сделками в программном обеспечении.