Pustaka PHP untuk mengubah ukuran, menskalakan, dan memotong gambar.
Jika Anda tidak ingin memotong, mengubah ukuran, dan menyimpan gambar di server Anda, Gumlet.com adalah layanan gratis yang dapat memproses gambar secara real-time dan melayani seluruh dunia melalui CDN.
Paket ini tersedia melalui Packagist dengan vendor dan pengidentifikasi paket sama dengan repo ini.
Jika menggunakan Composer, di file composer.json
Anda tambahkan:
{
"require" : {
"gumlet/php-image-resize" : " 2.0.* "
}
}
Jika Anda masih menggunakan PHP 5.3, silakan instal versi 1.7.0
dan jika Anda menggunakan PHP 5.4, silakan instal perpustakaan ini versi 1.8.0
.
Dukungan WebP ditambahkan dengan PHP 5.6.0
dan versi perpustakaan saat ini mendukungnya. Jika Anda menghadapi masalah, silakan gunakan versi 1.9.2
perpustakaan ini.
Untuk versi PHP >= 7.2, versi 2.0.1
atau lebih tinggi dari perpustakaan ini harus digunakan.
Jika tidak:
include ' /path/to/ImageResize.php ' ;
Karena kelas ini menggunakan namespace, saat membuat instance objek, Anda harus menggunakan namespace yang sepenuhnya memenuhi syarat:
$ image = new Gumlet ImageResize ();
Atau aliasnya:
use Gumlet ImageResize ;
$ image = new ImageResize ();
Catatan: Pustaka ini menggunakan kelas GD yang tidak mendukung pengubahan ukuran file animasi gif
Untuk menskalakan gambar, dalam hal ini menjadi setengah ukurannya (penskalaan didasarkan pada persentase):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> save ( ' image2.jpg ' );
Untuk mengubah ukuran gambar menurut satu dimensi (menjaga rasio aspek):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToHeight ( 500 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> save ( ' image2.jpg ' );
Untuk mengubah ukuran gambar menurut ukuran tertentu, apa pun orientasinya (menjaga rasio aspek):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToLongSide ( 500 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToShortSide ( 300 );
$ image -> save ( ' image2.jpg ' );
Untuk mengubah ukuran gambar agar sesuai dengan kumpulan dimensi tertentu (menjaga rasio aspet):
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToBestFit ( 500 , 300 );
$ image -> save ( ' image2.jpg ' );
Semua fungsi pengubahan ukuran memiliki opsi $allow_enlarge
yang disetel ke false secara default. Anda dapat mengaktifkannya dengan meneruskan true
ke fungsi pengubahan ukuran apa pun:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 500 , 300 , $ allow_enlarge = True );
$ image -> save ( ' image2.jpg ' );
Jika Anda senang menangani sendiri rasio aspek, Anda dapat langsung mengubah ukurannya:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );
Hal ini akan menyebabkan gambar Anda miring jika Anda tidak menggunakan rasio lebar/tinggi yang sama dengan gambar sumber.
Untuk memotong gambar:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
Ini akan menskalakan gambar sedekat mungkin dengan dimensi yang dilewati, lalu memotong dan memusatkan sisanya.
Dalam kasus contoh di atas, gambar berukuran 400px × 600px akan diubah ukurannya menjadi 200px × 300px, lalu 50px akan diambil dari atas dan bawah, sehingga Anda mendapatkan 200px × 200px.
Mode pemangkasan:
Beberapa opsi mode potong tersedia agar Anda dapat memilih bagaimana Anda ingin menangani kelebihan lebar atau tinggi setelah mengubah ukuran gambar Anda. Mode krop default yang digunakan adalah CROPCENTER
. Hasilnya, potongan kode tersebut setara:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPCENTER );
$ image -> save ( ' image2.jpg ' );
Jika Anda memiliki gambar berukuran 400px × 600px dan Anda ingin memotongnya menjadi 200px × 200px, gambar akan diubah ukurannya menjadi 200px × 300px, maka Anda dapat menunjukkan bagaimana Anda ingin menangani 100px tersebut yang melebihi nilai pemotongan. mode yang ingin Anda gunakan.
Misalnya meneruskan mode krop CROPTOP
akan menghasilkan 100px diambil dari bawah sehingga Anda memiliki 200px × 200px.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPTOP );
$ image -> save ( ' image2.jpg ' );
Sebaliknya melewati mode crop CROPBOTTOM
akan menghasilkan 100px yang diambil dari atas sehingga Anda memiliki 200px × 200px.
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 , true , ImageResize:: CROPBOTTOM );
$ image -> save ( ' image2.jpg ' );
Tanaman bebas:
Ada juga cara untuk menentukan posisi pemotongan khusus. Anda dapat mendefinisikan $x dan $y dalam metode freecrop
:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> freecrop ( 200 , 200 , $ x = 20 , $ y = 20 );
$ image -> save ( ' image2.jpg ' );
Untuk memuat gambar dari string:
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
$ image -> save ( ' image.jpg ' );
Anda juga dapat mengembalikan hasilnya sebagai string:
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> scale ( 50 );
echo $ image -> getImageAsString ();
Ajaib __toString()
juga didukung:
$ image = ImageResize:: createFromString ( base64_decode ( ' R0lGODlhAQABAIAAAAQCBP///yH5BAEAAAEALAAAAAABAAEAAAICRAEAOw== ' ));
$ image -> resize ( 10 , 10 );
echo ( string ) $ image ;
Seperti yang terlihat di atas, Anda dapat memanggil $image->save('image.jpg');
Untuk merender gambar langsung ke browser, Anda dapat memanggil $image->output()
;
Saat menyimpan ke disk atau mengeluarkannya ke browser, skrip mengasumsikan tipe keluaran yang sama dengan masukan.
Jika Anda ingin menyimpan/menghasilkan tipe gambar yang berbeda, Anda harus meneruskan konstanta PHP IMAGETYPE_
* (yang didukung):
IMAGETYPE_GIF
IMAGETYPE_JPEG
IMAGETYPE_PNG
Ini memungkinkan Anda menyimpan dalam tipe berbeda ke sumbernya:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image.png ' , IMAGETYPE_PNG );
Properti $quality_jpg
, $quality_webp
dan $quality_png
tersedia untuk Anda konfigurasi:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> quality_jpg = 100 ;
$ image -> resize ( 800 , 600 );
$ image -> save ( ' image2.jpg ' );
Secara default, masing-masing disetel ke 85 dan 6. Lihat entri manual untuk imagejpeg()
dan imagepng()
untuk info lebih lanjut.
Anda juga dapat meneruskan kualitas secara langsung ke metode save()
, output()
dan getImageAsString()
:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> crop ( 200 , 200 );
$ image -> save ( ' image2.jpg ' , null , 100 );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> resizeToWidth ( 300 );
$ image -> output ( IMAGETYPE_PNG , 4 );
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ result = $ image -> getImageAsString ( IMAGETYPE_PNG , 4 );
Kami meneruskan null
untuk jenis gambar pada contoh di atas untuk melewatinya dan memberikan kualitas. Dalam hal ini, jenis gambar diasumsikan sama dengan masukan.
Secara default, interlacing gambar diaktifkan. Ini dapat dinonaktifkan dengan mengatur $interlace
ke 0
:
$ image = new ImageResize ( ' image.jpg ' );
$ image -> scale ( 50 );
$ image -> interlace = 0 ;
$ image -> save ( ' image2.jpg ' );
Saat melakukan operasi, gambar asli dipertahankan, sehingga Anda dapat melakukan operasi berantai tanpa kerusakan berlebihan.
Ini berguna untuk membuat berbagai ukuran:
$ image = new ImageResize ( ' image.jpg ' );
$ image
-> scale ( 50 )
-> save ( ' image2.jpg ' )
-> resizeToWidth ( 300 )
-> save ( ' image3.jpg ' )
-> crop ( 100 , 100 )
-> save ( ' image4.jpg ' )
;
ImageResize menampilkan ImageResizeException miliknya sendiri untuk kesalahan. Anda dapat menangkapnya atau menangkap Exception umum yang diperluas.
Hal ini tidak diharapkan, tetapi jika terjadi kesalahan besar di tengah jalan maka pemberitahuan atau peringatan Kesalahan dapat ditampilkan dari GD PHP dan Fungsi Gambar (http://php.net/manual/en/ref.image.php)
try {
$ image = new ImageResize ( null );
echo " This line will not be printed " ;
} catch ( ImageResizeException $ e ) {
echo " Something went wrong " . $ e -> getMessage ();
}
Anda dapat menerapkan efek khusus untuk gambar baru seperti mengaburkan atau menambahkan spanduk.
$ image = new ImageResize ( ' image.jpg ' );
// Add blure
$ image -> addFilter ( function ( $ imageDesc ) {
imagefilter ( $ imageDesc , IMG_FILTER_GAUSSIAN_BLUR );
});
// Add banner on bottom left corner
$ image18Plus = ' banner.png '
$ image -> addFilter ( function ( $ imageDesc ) use ( $ image18Plus ) {
$ logo = imagecreatefrompng ( $ image18Plus );
$ logo_width = imagesx ( $ logo );
$ logo_height = imagesy ( $ logo );
$ image_width = imagesx ( $ imageDesc );
$ image_height = imagesy ( $ imageDesc );
$ image_x = $ image_width - $ logo_width - 10 ;
$ image_y = $ image_height - $ logo_height - 10 ;
imagecopy ( $ imageDesc , $ logo , $ image_x , $ image_y , 0 , 0 , $ logo_width , $ logo_height );
});
Membalik gambar menggunakan mode tertentu dan metode ini hanya untuk PHP versi 5.4.
$ flip = new ImageResize ( ' image.png ' );
$ image = imagecreatetruecolor ( 200 , 100 );
$ image -> addFilter ( function ( $ image ) {
imageflip ( $ image , IMG_FLIP_HORIZONTAL );
});
Kedua fungsi tersebut akan digunakan sesuai urutan penambahannya.
Anda dapat mengaktifkan koreksi warna gamma yang dinonaktifkan secara default.
$ image = new ImageResize ( ' image.png ' );
$ image -> gamma ( true );
https://gumlet.github.io/php-image-resize/index.html
Perpustakaan ini dikelola oleh Gumlet.com