Ini adalah perpustakaan resmi Kraken.io PHP, yang seharusnya membantu pengguna dengan sangat cepat mengintegrasikan optimasi gambar kami ke dalam proyek PHP mereka. Pengoptimal gambar kraken.io.
Jika Anda menggunakan Composer, Anda dapat menambahkan ketergantungan pada kraken-io/kraken-php ke file composer.json proyek Anda. Berikut adalah contoh ketergantungan pada versi 1.2:
{
"require" : {
"kraken-io/kraken-php" : " ^1.2 "
}
}Atau Anda juga dapat menjalankan perintah berikut di direktori root proyek Anda:
composer require kraken-io/kraken-php
Jika Anda sudah memiliki git, cara termudah untuk mengunduh perpustakaan Kraken-PHP adalah dengan perintah git:
git clone git://github.com/kraken-io/kraken-php.git /path/to/include/kraken
Atau, Anda dapat mengunduh file PHP dari GitHub dan menempatkannya di dalam proyek PHP Anda:
https://github.com/kraken-io/kraken-php/archive/master.zip
Pertama, Anda perlu mendaftar untuk Kraken.io API dan mendapatkan kunci API dan API rahasia Anda yang unik. Anda akan menemukan keduanya di bawah kredensial API. Setelah Anda mengatur akun Anda, Anda dapat mulai menggunakan kraken.io API dalam aplikasi Anda.
Ingat - Never Link ke gambar yang dioptimalkan yang ditawarkan untuk diunduh. Anda harus mengunduhnya terlebih dahulu, dan kemudian menggantinya di situs web atau aplikasi Anda. Karena alasan keamanan, gambar yang dioptimalkan tersedia di server kami hanya selama satu jam .
Anda dapat mengoptimalkan gambar Anda dengan dua cara - dengan memberikan URL gambar yang ingin Anda optimalkan atau dengan mengunggah file gambar langsung ke kraken.io API.
Opsi pertama (URL gambar) sangat bagus untuk gambar yang sudah dalam produksi atau tempat lain di Internet. Yang kedua (unggahan langsung) sangat ideal untuk proses penyebaran Anda, membangun skrip atau pemrosesan unggahan pengguna Anda di mana Anda belum memiliki gambar yang tersedia secara online.
Kraken.io memberi Anda dua opsi untuk mengambil hasil optimasi. Dengan opsi wait , set, hasilnya akan segera dikembalikan dalam tanggapan. Dengan opsi callback_url , setel hasilnya akan diposting ke URL yang ditentukan dalam permintaan Anda.
Dengan opsi wait dihidupkan untuk setiap permintaan ke API, koneksi akan dibuka sampai gambar telah dioptimalkan. Setelah ini selesai, Anda akan mendapatkan respons langsung dengan objek JSON yang berisi hasil optimasi Anda. Untuk menggunakan opsi ini cukup atur "wait": true dalam permintaan Anda.
Meminta:
{
"auth" : {
"api_key" : "your-api-key" ,
"api_secret" : "your-api-secret"
} ,
"url" : "http://image-url.com/file.jpg" ,
"wait" : true
}Tanggapan
{
"success" : true ,
"file_name" : "file.jpg" ,
"original_size" : 324520 ,
"kraked_size" : 165358 ,
"saved_bytes" : 159162 ,
"kraked_url" : "http://dl.kraken.io/d1aacd2a2280c2ffc7b4906a09f78f46/file.jpg"
} Dengan URL Callback, koneksi HTTPS akan segera diakhiri dan id unik akan dikembalikan di badan respons. Setelah optimasi berlebihan Kraken.io akan memposting pesan ke callback_url yang ditentukan dalam permintaan Anda. ID dalam respons akan mencerminkan ID dalam hasil yang diposting ke URL panggilan balik Anda.
Kami merekomendasikan RequestBin sebagai cara mudah untuk menangkap hasil optimisasi untuk pengujian awal.
Meminta:
{
"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"
}Tanggapan:
{
"id" : "18fede37617a787649c3f60b9f1f280d"
}Hasil yang diposting ke URL callback:
{
"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"
} Langkah pertama adalah mengautentikasi ke kraken.io API dengan memberikan kunci API unik dan rahasia API Anda saat membuat instance baru kraken.io:
<?php
require_once ( " Kraken.php " );
$ kraken = new Kraken ( " your-api-key " , " your-api-secret " ); Untuk mengoptimalkan gambar dengan menyediakan URL gambar, gunakan metode kraken.url() . Anda perlu memberikan dua parameter wajib dalam array - url ke gambar dan wait atau 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 ); Bergantung pada opsi respons yang dipilih (tunggu atau URL callback) di array data Anda akan menemukan ID optimasi atau hasil optimisasi yang berisi properti success , nama file, ukuran file asli, ukuran file Kraked, jumlah penghematan dan URL gambar yang dioptimalkan:
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 "
} Jika Anda ingin mengunggah gambar Anda langsung ke Kraken.io API, gunakan metode kraken->upload() . Anda perlu memberikan dua parameter wajib dalam array - file yang merupakan jalur absolut ke file dan wait atau callback_url .
Dalam array $data Anda akan menemukan properti optimisasi yang sama seperti dengan opsi url di atas.
<?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 );Ketika Anda memutuskan untuk mengorbankan sedikit kualitas gambar (biasanya tidak terlalu mencolok bagi mata manusia), Anda akan dapat menghemat hingga 90% dari berat file awal. Optimalisasi Lossy akan memberi Anda hasil yang luar biasa hanya dengan sebagian kecil dari kehilangan kualitas gambar.
Untuk menggunakan optimasi lossy cukup atur "lossy" => true dalam permintaan Anda:
<?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 );Gambar PNG akan dikonversi dari 24-bit menjadi 8-bit dengan saluran alpha penuh. Proses ini disebut kuantisasi PNG dalam format RGBA dan berarti jumlah warna yang digunakan dalam suatu gambar akan dikurangi menjadi 256 sambil mempertahankan semua informasi tentang transparansi alfa.
Untuk optimasi JPEG yang lossy, Kraken.io akan menghasilkan banyak salinan gambar input dengan pengaturan kualitas yang berbeda. Ini kemudian akan memilih yang dengan cerdas dengan kualitas terbaik untuk ration file. Ini memastikan gambar JPEG Anda akan berada pada ukuran terkecil dengan kualitas setinggi mungkin, tanpa perlu manusia untuk memilih gambar yang optimal.
Opsi pengubah ukuran gambar sangat bagus untuk membuat thumbnail atau pratinjau gambar dalam aplikasi Anda. Kraken.io pertama -tama akan mengubah ukuran gambar yang diberikan dan kemudian mengoptimalkannya dengan beragam algoritma optimasi yang luas. Opsi resize membutuhkan beberapa parameter untuk dilewatkan seperti width dan/atau height yang diinginkan dan properti strategy wajib. Misalnya:
<?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 ); Properti strategy dapat memiliki salah satu nilai berikut:
exact - Ubah Ubah dengan Lebar/Tinggi yang Tepat. Tidak ada rasio aspek yang akan dipertahankan.portrait - Lebar yang tepat akan ditetapkan, tinggi akan disesuaikan sesuai dengan rasio aspek.landscape - Tinggi yang tepat akan ditetapkan, lebar akan disesuaikan sesuai dengan rasio aspek.auto - Strategi terbaik (potret atau lanskap) akan dipilih untuk gambar yang diberikan sesuai dengan rasio aspek.fit - Opsi ini akan memotong dan mengubah ukuran gambar Anda agar sesuai dengan lebar dan tinggi yang diinginkan.square - Strategi ini pertama -tama akan memotong gambar dengan dimensi yang lebih pendek untuk menjadikannya persegi, kemudian mengubah ukurannya ke ukuran yang ditentukan.crop - Opsi ini akan memotong gambar Anda dengan ukuran persis yang Anda tentukan tanpa distorsi.fill - Strategi ini memungkinkan Anda untuk mengubah ukuran gambar agar sesuai dengan batas yang ditentukan sambil mempertahankan rasio aspek (seperti strategi otomatis). Properti latar belakang opsional memungkinkan Anda untuk menentukan warna yang akan digunakan untuk mengisi bagian yang tidak digunakan dari batas yang ditentukan sebelumnya. Properti latar belakang dapat diformat dalam notasi hex #f60 atau #ff6600 , rgb rgb(255, 0, 0) atau rgba rgba(91, 126, 156, 0.7) . Warna latar belakang default putih.Informasi lebih lanjut tentang pengubah ukuran gambar dan penanaman dapat ditemukan di referensi API Kraken.io
Webp adalah format gambar baru yang diperkenalkan oleh Google pada tahun 2010 yang mendukung kompresi lossy dan lossless. Menurut Google, gambar lossless Webp berukuran 26% lebih kecil dibandingkan dengan PNGS dan gambar Lossy WebP berukuran 25-34% lebih kecil dibandingkan dengan gambar JPEG.
Untuk merekomendasikan file PNG atau JPEG Anda ke dalam format WebP cukup atur "webp": true dalam permintaan Anda JSON. Anda juga dapat secara opsional mengatur "lossy": true Flag untuk memanfaatkan Kompresi Lossy 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 memungkinkan Anda untuk dengan mudah mengonversi gambar yang berbeda dari satu jenis/format ke yang lain. Jika, misalnya, Anda ingin mengubah file png transparan Anda menjadi jpeg dengan latar belakang abu -abu kraken.io API telah Anda liput.
Untuk mengonversi antara berbagai jenis gambar, Anda perlu menambahkan objek convert tambahan ke Anda meminta JSON. Objek ini membutuhkan tiga properti:
format yang Anda tentukan jenis file yang Anda ingin gambar Anda dikonversi menjadi.background opsional tempat Anda dapat menentukan warna latar belakang saat mengonversi dari format file transparan seperti PNG dan GIF menjadi format yang sepenuhnya buram seperti JPEG.keep_extension opsional yang memungkinkan Anda untuk menjaga ekstensi file asli tetap utuh terlepas dari format gambar output.Parameter wajib:
format - Format gambar yang ingin Anda ubah menjadi gambar Anda. Ini dapat menerima salah satu dari nilai -nilai berikut: jpeg , png atau gif .Parameter opsional:
background - Gambar Latar Belakang Saat mengonversi dari format file transparan seperti PNG atau GIF menjadi format yang sepenuhnya buram seperti JPEG. Properti latar belakang dapat dilewati dalam notasi hex "#f60" atau "#ff6600" , rgb "rgb(255, 0, 0)" atau rgba "rgba(91, 126, 156, 0.7)" . Warna latar belakang default putih.keep_extension - Nilai Boolean ( true atau false ) yang menginstruksikan Kraken.io API apakah ekstensi asli harus disimpan dalam nama file output. Misalnya ketika mengonversi "Image.jpg" menjadi format PNG dengan bendera ini dihidupkan pada nama gambar output masih akan menjadi "Image.jpg" meskipun gambar telah dikonversi menjadi PNG. Nilai default adalah makna false ekstensi yang benar akan selalu ditetapkan. Secara default, Kraken.io API akan menghapus semua metadata yang ditemukan dalam gambar untuk membuat file gambar sekecil mungkin, dan dalam mode lossy dan lossless. Entri seperti tag Exif, XMP dan IPTC, informasi profil warna, dll. Akan dilucuti sama sekali.
Namun ada situasi di mana Anda mungkin ingin melestarikan beberapa informasi meta yang terkandung dalam gambar, misalnya, pemberitahuan hak cipta atau geotag. Untuk melestarikan entri meta yang paling penting, tambahkan array preserve_meta tambahan ke permintaan Anda dengan satu atau lebih dari nilai -nilai berikut:
{
"preserve_meta" : [ "date" , "copyright" , "geotag" , "orientation" , "profile" ]
}profile - Akan mempertahankan profil warna ICC. Informasi profil warna ICC menambahkan bloat yang tidak perlu ke gambar. Namun, melestarikan itu dapat diperlukan dalam kasus yang sangat jarang di mana menghapus informasi ini dapat menyebabkan perubahan kecerahan dan/atau saturasi file yang dihasilkan.date - Akan Melestarikan Tanggal Pembuatan Gambar.copyright - Akan Melestarikan Entri Hak Cipta.geotag - akan mempertahankan informasi spesifik lokasi.orientation - akan mempertahankan tanda orientasi (rotasi).Contoh integrasi:
<?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 memungkinkan Anda untuk menyimpan gambar yang dioptimalkan secara langsung di s3 ember, wadah file cloud, wadah Azure atau wadah penyimpanan objek softlayer. Dengan hanya beberapa parameter tambahan, gambar yang dioptimalkan Anda akan didorong ke penyimpanan eksternal Anda dalam waktu singkat.
Parameter wajib:
key - "ID Kunci Akses" Amazon Anda yang unik.secret - Amazon Anda yang unik "Kunci Akses Rahasia".bucket - Nama wadah tujuan di akun Amazon S3 Anda.region -Nama wilayah ember S3 Anda terletak di. Lapangan ini wajib jika wilayah tersebut berbeda dari yang default ( us-east-1 ). Daftar lengkap wilayah S3 dapat ditemukan di sini.Parameter opsional:
path - Jalur tujuan dalam ember S3 Anda (misalnya "images/layout/header.jpg" ). Default ke root "/" .acl - Izin objek tujuan. Ini bisa "public_read" atau "private" . Default ke "public_read" . Parameter di atas harus diteruskan dalam kunci 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 ); Array $data akan berisi kunci kraked_url yang menunjuk langsung ke file yang dioptimalkan di akun Amazon S3 Anda:
" kraked_url " => "http: //s3.amazonaws.com/YOUR_CONTAINER/path/to/file.jpg"Parameter wajib:
user - Nama Pengguna Rackspace Anda.key - Kunci API File Cloud Anda yang Unik.container - Nama wadah tujuan di akun file cloud Anda.Parameter opsional:
path - Jalur tujuan dalam wadah Anda (misalnya "images/layout/header.jpg" ). Default ke root "/" .ssl - Nilai boolean ( true atau false ) menginstruksikan kraken.io API untuk mengambil URL SSL atau non -SSL dari rackspace cloudfiles. Default ke makna false URL non-SSL akan dikembalikan. Parameter di atas harus diteruskan dalam kunci 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 ); Jika wadah Anda diaktifkan CDN, hasil optimasi akan berisi kraked_url yang menunjuk langsung ke lokasi file yang dioptimalkan di akun file cloud Anda, misalnya:
kraked_url => "http: //e9ffc04970a269a54eeb-cc00fdd2d4f11dffd931005c9e8de53a.r2.cf1.rackcdn.com/path/to/file.jpg" Jika wadah Anda bukan file yang dioptimalkan yang dioptimalkan CDN akan disimpan di akun CloudFiles Anda, tetapi kraked_url akan menunjuk ke URL gambar yang dioptimalkan di penyimpanan API Kraken.io:
kraked_url => "http: //dl.kraken.io/ecdfa5c55d5668b1b5fe9e420554c4ee/file.jpg"Parameter wajib:
account - Akun Penyimpanan Azure Anda.key - Kunci akses penyimpanan Azure unik Anda.container - Nama wadah tujuan di akun Azure Anda.Parameter opsional:
path - Jalur tujuan dalam wadah Anda (misalnya "images/layout/header.jpg" ). Default ke root "/" . Parameter di atas harus diteruskan dalam kunci 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 );Parameter wajib:
user - Nama pengguna SoftLayer Anda.key - Kunci API Softlayer Anda.container - Nama wadah tujuan di akun softlayer Anda.region - Nama Pendek Wilayah Kontainer Anda terletak. Ini bisa menjadi salah satu dari yang berikut: syd01 lon02 mon01 dal05 tok02 tor01 hkg02 mex01 par01 fra02 mil01 sjc01 sng01 mel01 ams01Parameter opsional:
path - Jalur tujuan dalam wadah Anda (misalnya "gambar/tata letak/header.jpg"). Default ke root "/".cdn_url - Nilai boolean true atau false menginstruksikan kraken.io API untuk mengembalikan URL CDN publik dari file yang dioptimalkan. Default ke makna false URL non-CDN akan dikembalikan. Parameter di atas harus diteruskan dalam objek 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 ); Di bawah ini Anda dapat menemukan contoh permintaan JSON lengkap yang menggunakan sl_store untuk mendorong gambar yang dioptimalkan ke dalam wadah penyimpanan objek softlayer Anda. Kami akan menggunakan opsi URL untuk memberi makan API dengan URL gambar untuk dioptimalkan:
<?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 ); Jika wadah softlayer Anda diaktifkan CDN dan Anda telah lulus "cdn_url": true dalam permintaan JSON Anda, hasil optimasi akan berisi kraked_url yang menunjuk langsung ke lokasi file yang dioptimalkan dalam CDN softlayer Anda, misalnya: misalnya: misalnya: misalnya:
kraked_url => "http: //1c231.http.fra02.cdn.softlayer.net/images/layout/header.jpg" Jika wadah Anda bukan kraked_url yang diaktifkan CDN akan menunjuk ke URL gambar yang dioptimalkan di API Kraken.io:
kraked_url => "http: //dl.kraken.io/api/ecdfa5c55d5668b1b5fe9e420554c4ee/header.jpg" Hak Cipta (C) 2013 - 2015 Nekkra Ug
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
Pemberitahuan hak cipta di atas dan pemberitahuan izin ini harus dimasukkan dalam semua salinan atau bagian substansial dari perangkat lunak.
Perangkat lunak ini disediakan "sebagaimana adanya", tanpa jaminan apa pun, tersurat maupun tersirat, termasuk tetapi tidak terbatas pada jaminan dapat diperjualbelikan, kebugaran untuk tujuan tertentu dan nonpringement. Dalam hal apa pun penulis atau pemegang hak cipta tidak akan bertanggung jawab atas klaim, kerusakan atau tanggung jawab lainnya, baik dalam tindakan kontrak, gugatan atau sebaliknya, timbul dari, di luar atau sehubungan dengan perangkat lunak atau penggunaan atau transaksi lain dalam perangkat lunak.