Kelas ini merupakan alternatif dari paket Intervention Image untuk pekerjaan yang lebih fleksibel dengan teks pada gambar. Gunakan jika Anda perlu menyesuaikan teks di area tertentu, secara otomatis menghitung ukuran font dan mengubah tinggi garis . Metode menggambar teks juga mengetahui cara mengembalikan ukuran sebenarnya dari prasasti, yang memungkinkan, misalnya, menempatkan balok di bawah satu sama lain.
Selain pekerjaan fleksibel dengan teks, kelas ini menyediakan API Gambar yang mirip dengan paket Intervensi. Termasuk pengubahan ukuran poster cerdas, filter, bentuk gambar, dan overlay gambar lainnya.
Jika Anda tidak menggunakan composer dalam pekerjaan Anda, Anda mungkin juga tertarik dengan kesederhanaan kelasnya dan tidak adanya ketergantungan apa pun. Perhatikan bahwa kelas ini hanya mendukung driver PHP-GD. Anda juga dapat dengan mudah mewarisi kelas Anda — semua metode induk dapat diganti.
Cara terbaik menginstal poster editor dengan cepat dan mudah menggunakan Composer.
Namun, Anda dapat meminta kelas secara langsung tanpa menggunakan pemuat - ini tidak akan memengaruhi kinerja dengan cara apa pun.
php composer.phar require antonlukin/poster-editor
Jika terjadi kesalahan, metode kelas mengembalikan pengecualian.
Oleh karena itu, yang terbaik adalah memanggil mereka di dalam blok try..catch
.
// Using composer
require_once __DIR__ . ' /vendor/autoload.php ' ;
// Or directly
// require_once __DIR__ . '/PosterEditor.php';
try {
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 600 , 600 );
$ image -> show ();
} catch ( Exception $ e ) {
echo $ e -> getMessage ();
}
$image->get()
Dapatkan sumber daya gambar untuk menggunakan perintah gd mentah.
$image->set(instance $resourse)
Tetapkan sumber daya gambar setelah menggunakan perintah gd mentah.
$image->make(mixed $data)
Buat contoh gambar baru dari file atau data biner.
$image->insert(mixed $data, array $options = array())
Tempelkan sumber gambar tertentu ke atas gambar saat ini dengan posisi opsional. Param pertama dapat berupa data biner atau jalur ke file atau instance kelas lainnya. Opsi adalah larik koordinat offset relatif x/y dari sudut kiri atas dan opasitas dari 0 hingga 100, di mana 0 berarti tidak ada transparansi. Secara default, gambar akan berada di tengah.
$image->canvas(int $width, int $height, array $options = array())
Inisialisasi kanvas berdasarkan lebar dan tinggi. Pilihan warna latar belakang ada dalam berbagai pengaturan warna/opasitas. Secara default kanvas berwarna hitam tanpa opacity.
$image->show(string $format = null, int $quality = 90)
Mengirim respons HTTP dengan gambar saat ini dalam format dan kualitas tertentu. Format adalah ekstensi gambar file. Secara default, data respons akan dikodekan dalam tipe gambar saat ini. Jika jenis gambar belum ditentukan, metode akan mengembalikan data berkode jpeg. Kualitas dinormalisasi untuk semua jenis file dengan rentang dari 0 (kualitas buruk, file kecil) hingga 100 (kualitas terbaik, file besar). Nilai defaultnya adalah 90. Format PNG bersifat lossless dan kualitasnya hanya memengaruhi ukuran gambar dan kecepatan kompresi.
$image->save(string $path, int $quality = 90, string $format = null)
Simpan keadaan objek gambar saat ini di sistem file. Secara opsional, tentukan jalur tertentu di mana gambar harus disimpan. Jenis gambar akan ditentukan oleh ekstensi file. Jika tidak ada ekstensi yang tersedia, data respons akan dikodekan dalam jenis gambar saat ini. Jika jenis gambar belum ditentukan, metode akan mengembalikan data berkode jpeg. Secara opsional, Anda dapat menimpanya dengan parameter format. Kualitas dinormalisasi untuk semua jenis file dengan rentang dari 0 (kualitas buruk, file kecil) hingga 100 (kualitas terbaik, file besar). Nilai defaultnya adalah 90. Format PNG bersifat lossless dan kualitasnya hanya memengaruhi ukuran gambar dan kecepatan kompresi.
$image->destroy()
Membebaskan memori yang terkait dengan contoh gambar saat ini sebelum skrip PHP berakhir. Biasanya sumber daya dimusnahkan secara otomatis setelah skrip selesai.
$image->width()
Mengembalikan tinggi piksel gambar saat ini.
$image->height()
Mengembalikan tinggi piksel gambar saat ini.
$image->resize(int $width, int $height)
Mengubah ukuran gambar saat ini berdasarkan lebar dan tinggi tertentu. Tidak memperhatikan aspek rasio. Untuk mengubah ukuran secara proporsional, gunakan metode upsize
dan downsize
.
$image->upsize(int $width = null, int $height = null)
Perbesar gambar pada sisi terbesar. Dihitung berdasarkan rasio untuk lebar atau tinggi yang dibatalkan.
$image->downsize(int $width = null, int $height = null)
Perkecil gambar pada sisi terbesar. Dihitung berdasarkan rasio untuk lebar atau tinggi yang dibatalkan.
$image->crop(int $width, int $height, array $options = array())
Gunting bagian persegi panjang dari gambar saat ini dengan lebar dan tinggi tertentu. Tentukan koordinat x,y opsional untuk memindahkan sudut kiri atas potongan ke posisi tertentu.
$image->fit(int $width, int $height, string $position = 'center')
Gabungkan pemotongan dan pengubahan ukuran untuk memformat gambar dengan cara yang cerdas. Metode ini akan menemukan rasio aspek yang paling sesuai pada gambar saat ini secara otomatis, memotongnya dan mengubah ukurannya ke dimensi yang ditentukan. Kemungkinan posisi top-left
, top
, top-right
, bottom-left
, bottom
, bottom-right
, right
, left
dan center
secara default.
$image->line(int $x1, int $y1, int $x2, int $y2, array $options = array())
Tarik garis dari x,y titik 1 ke x,y titik 2 pada gambar saat ini. Gunakan parameter opsi untuk mengatur nilai warna, opasitas, dan lebar.
$image->rectangle(int $x, int $y, int $width, int $height, array $options = array())
Gambarlah persegi panjang berwarna pada gambar saat ini. Gunakan parameter opsi untuk mengatur nilai warna, opacity, ketebalan dan garis besar.
$image->ellipse(int $x, int $y, int $width, int $height, array $options = array())
Gambarlah sebuah elips. Gunakan parameter opsi untuk mengatur nilai warna, opasitas, dan garis tepi.
$image->brightness(int $level = 0)
Ubah kecerahan gambar saat ini sesuai tingkat yang ditentukan. Gunakan nilai antara -100 untuk kecerahan minimum 0 jika tidak ada perubahan dan +100 untuk kecerahan maks.
$image->contrast(int $level = 0)
Ubah kontras gambar saat ini sesuai level yang ditentukan. Gunakan nilai antara -100 untuk kontras minimum 0 jika tidak ada perubahan dan +100 untuk kontras maks.
$image->grayscale()
Ubah gambar menjadi versi skala abu-abu.
$image->blur()
Terapkan efek gambar buram.
$image->invert()
Membalikkan warna suatu gambar.
$image->blackout()
Gambarlah persegi panjang opaktitas hitam pada gambar.
$image->rotate(int $angle, array $options = array())
Putar gambar. Atur sudut dalam derajat dan warna opsional dari zona terbuka setelah rotasi.
$image->text(string $text, array $options = array(), array &$boundary = array())
Menggambar teks pada gambar. Opsi yang memungkinkan:
Gunakan batas untuk mendapatkan dimensi sebenarnya dari kotak teks yang digambar. Lihat contoh detailnya di bawah.
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1200 , 630 , ' bottom ' )-> blackout ( 50 );
$ logo = new PosterEditor PosterEditor ();
$ logo -> make ( ' images/logo.png ' )-> downsize ( 150 , null );
$ image -> insert ( $ logo , array ( ' x ' => 50 , ' y ' => 50 ))-> show ();
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1200 , 630 );
$ image -> grayscale ()-> brightness (- 40 );
$ image -> text (
' Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat Lorem ipsum dolor sit amet ' , // phpcs:ignore
array (
' x ' => 100 ,
' y ' => 100 ,
' width ' => 1000 ,
' height ' => 400 ,
' horizontal ' => ' center ' ,
' vertical ' => ' center ' ,
' fontpath ' => ' fonts/opensans.ttf ' ,
' fontsize ' => 24 ,
' lineheight ' => 1.75 ,
' color ' => ' #ffffff ' ,
' opacity ' => 0 ,
' debug ' => true ,
)
);
$ image -> show ( ' jpg ' , 70 );
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 900 , 600 );
$ image -> blackout ( 70 );
$ image -> text (
' Lorem ipsum dolor d d 4 g sit amet, consectetur adipiscing et, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex eas commodo consequat sdfsdfl ' , // phpcs:ignore
array (
' x ' => 100 ,
' y ' => 100 ,
' width ' => 600 ,
' height ' => 400 ,
' horizontal ' => ' justify ' ,
' vertical ' => ' justify ' ,
' fontpath ' => ' fonts/opensans.ttf ' ,
' fontsize ' => 20 ,
' lineheight ' => 1.5 ,
' color ' => ' #ffffff ' ,
' opacity ' => 0 ,
' debug ' => true ,
)
);
$ image -> show ( ' png ' );
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> crop (
900 , 600 ,
array (
' x ' => ' 0 ' ,
' y ' => ' 100 '
)
);
$ image -> grayscale ()-> brightness (- 40 );
$ image -> text (
' Large title with unknown height. Can be multi-line ' ,
array (
' x ' => 50 ,
' y ' => 100 ,
' width ' => 800 ,
' fontpath ' => ' /fonts/merriweather.ttf ' ,
' fontsize ' => 48 ,
' lineheight ' => 1.5 ,
' color ' => ' #9999ff ' ,
),
$ boundary
);
$ image -> text (
' This text appears right after title using smart boundaries ' ,
array (
' x ' => 50 ,
' y ' => $ boundary [ ' y ' ] + $ boundary [ ' height ' ],
' width ' => 800 ,
' fontpath ' => ' /fonts/opensans.ttf ' ,
' fontsize ' => 20 ,
' lineheight ' => 1.5 ,
' color ' => ' #ff9999 ' ,
),
$ boundary
);
$ image -> show ();
$ image = new PosterEditor PosterEditor ();
$ image -> make ( ' images/bridge.jpg ' )-> fit ( 1000 , 630 , ' bottom ' );
$ image -> contrast ( 5 )-> brightness (- 30 )-> blur ();
$ image -> rectangle (
20 , 20 , 960 , 590 ,
array (
' color ' => ' #ffffff ' ,
' outline ' => true ,
' width ' => 4 ,
)
);
$ image -> ellipse (
200 , 200 , 200 , 200 ,
array (
' color ' => ' #00ff00 ' ,
' opacity ' => 50 ,
)
);
$ image -> ellipse (
800 , 200 , 200 , 200 ,
array (
' color ' => ' #ff0000 ' ,
' opacity ' => 50 ,
)
);
$ image -> rectangle (
480 , 280 , 80 , 140 ,
array (
' color ' => ' #0000ff ' ,
)
);
$ image -> line (
200 , 500 , 800 , 500 ,
array (
' color ' => array ( 255 , 255 , 0 ),
' opacity ' => 10 ,
' width ' => 4 ,
)
);
$ image -> show ( ' png ' );
Semua kode proyek disimpan di Github. Cara terbaik untuk membantu proyek ini adalah dengan melaporkan bug atau menambahkan beberapa fungsi baru. Anda juga dapat membuka masalah di sini atau mengirim permintaan tarik.