이것은 공식 Kraken.io PHP 라이브러리로서 사용자가 이미지 최적화를 PHP 프로젝트에 매우 빠르게 통합하는 데 도움이됩니다. kraken.io 이미지 최적화기.
작곡가를 사용하는 경우 프로젝트의 composer.json 파일에 kraken-io/kraken-php 에 종속성을 추가 할 수 있습니다. 다음은 버전 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
또는 GitHub에서 PHP 파일을 다운로드하여 PHP 프로젝트에 배치 할 수 있습니다.
https://github.com/kraken-io/kraken-php/archive/master.zip
먼저 Kraken.io API에 가입하고 고유 한 API 키 및 API 비밀을 얻어야합니다. API 자격 증명에서 두 가지 모두를 찾을 수 있습니다. 계정을 설정하면 응용 프로그램에서 kraken.io API를 사용해야합니다.
기억 - 다운로드에 제공되는 최적화 된 이미지에 링크하지 마십시오. 먼저 다운로드 한 다음 웹 사이트 나 응용 프로그램에서 교체해야합니다. 보안상의 이유로 최적화 된 이미지는 서버에서 1 시간 동안 만 사용할 수 있습니다.
최적화하려는 이미지의 URL을 제공하거나 Kraken.io API에 직접 이미지 파일을 업로드하여 이미지를 두 가지 방법으로 최적화 할 수 있습니다.
첫 번째 옵션 (이미지 URL)은 이미 제작중인 이미지 또는 인터넷의 다른 장소에 적합합니다. 두 번째 (직접 업로드)는 배포 프로세스, 스크립트 빌드 또는 아직 온라인에서 이미지를 사용할 수없는 사용자의 업로드를 처리하는 데 이상적입니다.
Kraken.io는 최적화 결과를 가져 오기위한 두 가지 옵션을 제공합니다. wait 옵션 설정을 사용하면 응답에서 결과가 즉시 반환됩니다. callback_url 옵션 설정을 사용하면 결과가 요청에 지정된 URL에 게시됩니다.
API에 대한 모든 요청에 대해 wait 옵션이 켜져 있으면 이미지가 최적화 될 때까지 연결이 열려 있습니다. 이 작업이 완료되면 최적화 결과가 포함 된 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 에 메시지를 게시합니다. 응답의 ID는 콜백 URL에 게시 된 결과의 ID를 반영합니다.
초기 테스트를위한 최적화 결과를 쉽게 캡처하는 방법으로 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"
} 첫 번째 단계는 새로운 kraken.io 인스턴스를 만들면서 고유 한 API 키와 API 비밀을 제공하여 Kraken.io API에 인증하는 것입니다.
<?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 ); data 배열에서 선택한 응답 옵션 (대기 또는 콜백 URL)에 따라 success 속성, 파일 이름, 원본 파일 크기, KRAKED 파일 크기, 저장량 및 최적화 된 이미지 URL이 포함 된 최적화 ID 또는 최적화 결과를 찾을 수 있습니다.
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 "
} 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 Optimizations를 사용하려면 단순히 요청에서 "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 비트로 변환됩니다. 이 프로세스는 RGBA 형식으로 PNG Quantization이라고하며 이미지에 사용 된 색상의 양은 알파 투명성에 대한 모든 정보를 유지하면서 256으로 감소한다는 것을 의미합니다.
Lossy JPEG 최적화의 경우 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 -이 전략을 사용하면 종횡비 (자동 전략과 마찬가지로)를 보존하면서 지정된 범위에 맞게 이미지를 크기로 조정할 수 있습니다. 옵션 배경 속성을 사용하면 이전에 지정된 범위의 미사용 부분을 채우는 데 사용되는 색상을 지정할 수 있습니다. 배경 속성은 HEX 표기법 #f60 또는 #ff6600 , RGB rgb(255, 0, 0) 또는 RGBA rgba(91, 126, 156, 0.7) 로 형식화 될 수 있습니다. 기본 배경색은 흰색입니다.이미지 크기 조정 및 자르기에 대한 자세한 내용은 kraken.io API 참조를 참조하십시오.
Webp는 2010 년 Google에서 소개 한 새로운 이미지 형식으로 손실 및 무손실 압축을 모두 지원합니다. Google에 따르면 Webp Lossless 이미지는 PNG에 비해 크기가 26% 작고 Webp Lossy Images는 JPEG 이미지에 비해 크기가 25-34% 더 작습니다 .
png 또는 jpeg 파일을 웹p 형식으로 재구성하려면 요청 json에 "webp": true 플래그를 설정합니다. 선택적으로 "lossy": true Flag를 설정하여 Webp의 Lossy 압축을 활용할 수 있습니다.
<?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를 사용하면 한 유형/형식에서 다른 형식으로 다른 이미지를 쉽게 변환 할 수 있습니다. 예를 들어, 투명한 PNG 파일을 회색 배경 kraken.io API가있는 JPEG로 전환하려는 경우, 당신은 당신이 덮었습니다.
다른 이미지 유형을 변환하려면 추가 convert 객체를 추가해야합니다. 이 개체는 세 가지 속성을 사용합니다.
format 변환합니다.background 속성.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 - kraken.io API를 지시하는 부울 값 ( true 또는 false ). 원래 확장자가 출력 파일 이름에 보관 해야하는지 여부를 지시합니다. 예를 들어 "image.jpg"를 PNG 형식으로 변환하면이 플래그가 켜진 상태에서 이미지가 PNG로 변환 되었더라도 출력 이미지 이름은 여전히 "image.jpg"입니다. 기본값은 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 );Kraken.io API를 사용하면 최적화 된 이미지를 S3 버킷, 클라우드 파일 컨테이너, Azure 컨테이너 또는 SoftLayer 객체 저장 컨테이너에 직접 저장할 수 있습니다. 몇 가지 추가 매개 변수만으로 최적화 된 이미지가 외부 스토리지로 즉시 푸시됩니다.
필수 매개 변수 :
key - 독특한 아마존 "액세스 키 ID".secret - 독특한 아마존 "비밀 액세스 키".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 Array에는 Amazon S3 계정의 최적화 된 파일을 직접 가리키는 kraked_url 키가 포함됩니다.
" kraked_url " => "http: //s3.amazonaws.com/YOUR_CONTAINER/path/to/file.jpg"필수 매개 변수 :
user - 랙 스페이스 사용자 이름.key - 고유 한 클라우드 파일 API 키.container - 클라우드 파일 계정의 대상 컨테이너 이름.선택적 매개 변수 :
path - 컨테이너의 대상 경로 (예 : "images/layout/header.jpg" ). 기본값으로 루트 "/" .ssl 부울 값 ( true 또는 false ) KRAKEN.IO API가 RackSpace CloudFiles에서 SSL 또는 비 SSL URL을 가져 오도록 지시합니다. 거짓으로 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 포함됩니다.
kraked_url => "http: //e9ffc04970a269a54eeb-cc00fdd2d4f11dffd931005c9e8de53a.r2.cf1.rackcdn.com/path/to/file.jpg" 컨테이너가 CDN 지원 최적화 파일이 아닌 경우 어쨌든 CloudFiles 계정에 저장되지만 kraked_url 은 KRAKEN.IO API 스토리지의 최적화 된 이미지 URL을 가리 킵니다.
kraked_url => "http: //dl.kraken.io/ecdfa5c55d5668b1b5fe9e420554c4ee/file.jpg"필수 매개 변수 :
account - Azure Storage 계정.key - 고유 한 Azure Storage Access 키.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 - SoftLayer API 키.container - SoftLayer 계정의 대상 컨테이너 이름.region - 컨테이너의 짧은 이름에있는 컨테이너는 다음 중 하나 일 수 있습니다. syd01 lon02 mon01 dal05 tok02 tor01 hkg02 mex01 par01 fra02 mil01 sjc01 sng01 mel01 ams01선택적 매개 변수 :
path - 컨테이너의 대상 경로 (예 : "이미지/레이아웃/헤더 .jpg"). 기본값으로 루트 "/".cdn_url true 값 kraken.io API가 최적화 된 파일의 공개 cdn URL을 반환하도록 kraken.io API false 지시합니다. 거짓으로 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 ); 아래에서 sl_store 사용하여 최적화 된 이미지를 SoftLayer 객체 저장 컨테이너로 푸시하는 완전한 JSON 요청의 예를 찾을 수 있습니다. URL 옵션을 사용하여 최적화 할 이미지의 URL이있는 API를 공급합니다.
<?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 매개 변수는 예를 들어 SoftLayer CDN의 최적화 된 파일 위치를 직접 가리키는 kraked_url 포함됩니다.
kraked_url => "http: //1c231.http.fra02.cdn.softlayer.net/images/layout/header.jpg" 컨테이너가 CDN 가능 kraked_url 이 아닌 경우 kraken.io API의 최적화 된 이미지 URL을 가리 킵니다.
kraked_url => "http: //dl.kraken.io/api/ecdfa5c55d5668b1b5fe9e420554c4ee/header.jpg" 저작권 (C) 2013-2015 Nekkra UG
이에 따라이 소프트웨어 및 관련 문서 파일 ( "소프트웨어")의 사본을 얻는 사람에게는 허가가 부여됩니다. 소프트웨어의 사용, 복사, 수정, 합병, 배포, 배포, 숭고 및/또는 소프트웨어의 사본을 판매 할 권한을 포함하여 제한없이 소프트웨어를 처리 할 수 있도록 소프트웨어를 제공 할 권한이 없습니다.
위의 저작권 통지 및이 권한 통지는 소프트웨어의 모든 사본 또는 실질적인 부분에 포함되어야합니다.
이 소프트웨어는 상업성, 특정 목적에 대한 적합성 및 비 침해에 대한 보증을 포함하여 명시 적 또는 묵시적 보증없이 "그대로"제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타, 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래에서 발생하는 계약, 불법 행위 또는 기타의 행동에 관계없이 청구, 손해 또는 기타 책임에 대해 책임을지지 않습니다.