Fun dengan PHP GD Library: Part 1
Jika Anda seorang avid PHP pengembang, Anda mungkin menyadari ekstensi GD library.
Bagi mereka yang tidak terbiasa, perpustakaan GD memungkinkan Anda
untuk mengubah, memanipulasi, dan membuat gambar cukup sederhana. Hari ini, kita akan mempelajari dasar-dasar menggunakan PHP dan GD library.
Pertama Hal Pertama
Anda akan perlu memastikan GD library diinstal dan diaktifkan pada server Anda. Tidak tahu bagaimana melakukan ini? Jangan khawatir, hanya membuat file PHP pada server Anda dan ketik:
<Php echo phpinfo ();??>
Sekarang mengakses halaman di browser Anda dan Anda akan melihat daftar raksasa merinci fitur versi PHP. Gulir ke bawah sedikit dan mencari 'GD' pos untuk memastikan itu diaktifkan. Jika tidak, Anda akan perlu menghubungi perusahaan hosting Anda. Untungnya, kebanyakan server saya telah bekerja pada sudah memiliki perpustakaan GD dipasang dan diaktifkan.
Jika Anda ingin membaca lebih lanjut tentang perpustakaan GD, pastikan untuk memeriksa pengenalan GD penggu .
The Basics
Mari kita membahas beberapa dasar-dasar untuk mendapatkan kita mulai. Pertama, kita akan ingin memastikan bahwa kami melaporkan semua kesalahan ke browser. Kita dapat melakukannya dengan memasukkan berikut di bagian paling atas dari file php kami:
<? Php
ini_set ("display_errors", "1");
error_reporting (E_ALL);
?>
Jadilah Persegi
Mari kita mulai sederhana dan menggunakan PHP untuk membuat kotak biru
bagi kita - ada yang luar biasa tetapi kita perlu mengetahui dasar-dasar
pertama. Untuk mencapai persegi kami, kita perlu melakukan hal berikut:
- Menetapkan jenis konten kami sebagai gambar sehingga browser benar dapat menafsirkan script.
- Buat kanvas gambar baru kosong dengan lebar tertentu dan tinggi.
- Mengatur warna latar belakang kami menjadi biru.
- Simpan gambar akhir dan output ke browser.
- Membersihkan setiap memori yang digunakan untuk membuat dan menyimpan gambar.
- Panggil gambar dari file index.php kami yang akan ditampilkan.
Sekarang bahwa kita memiliki langkah dan proses untuk alun-alun bekerja, kita bisa mulai kode.
Saya melakukan yang terbaik untuk berkomentar setiap langkah kode, dan
akan pergi melalui fungsi tertentu atau proses setelah potongan kode. Yang mengatakan, di sini adalah kode untuk persegi kami. Setelah disisipkan dalam, simpan file ini sebagai 'basic_square.php':
<? Php
// Laporkan setiap kesalahan
ini_set ("display_errors", "1");
error_reporting (E_ALL);
// Mengatur jenis konten yang benar
header ('content-type: image / png');
// Buat aliran gambar dasar kita
// Lebar 125px tinggi, 125px
$ Image = ImageCreate (125, 125);
// Mengatur warna latar belakang
$ Biru = ImageColorAllocate ($ image, 0, 0, 255);
// Set up warna lain hanya untuk menunjukkan bagaimana warna pertama dinyatakan digunakan sebagai warna latar belakang ketika kita menggunakan ImageCreate ()
// Perhatikan bagaimana biru diterapkan pada latar belakang, * tidak * merah.
$ Merah = ImageColorAllocate ($ image, 255, 0, 0);
// Menyimpan gambar sebagai png dan output
imagepng ($ image);
// Memori sampai Batal digunakan
imagedestroy ($ image);
?>
Mari kita pergi melalui masing-masing fungsi dan langkah dalam kode di
atas sehingga kami dapat lebih memahami apa yang terjadi di sini.
- Seperti disebutkan, kami melaporkan kesalahan ke browser sehingga kita dapat memperbaiki bug.
- Selanjutnya kita menggunakan header () fungsi untuk menetapkan jenis konten kami ke gambar png.
-
Kami menyimpan gambar dalam sebuah variabel bernama 'citra' dan
menciptakan aliran gambar dasar kita dan menyatakan lebar dan tinggi
kita. Lihat ImageCreate () untuk informasi lebih lanjut.
- Selanjutnya kita menggunakan ImageColorAllocate fungsi untuk menyimpan warna biru di 'biru' variabel kita. Juga perhatikan bagaimana warna pertama menyatakan akan ditetapkan sebagai latar belakang menggunakan ImageCreate. Jadi biru akan background warna kita, bukan merah.
- Kami menggunakan imagepng () untuk menyimpan gambar akhir kami, dibutuhkan parameter tambahan jika Anda ingin menyimpannya ke direktori.
- Terakhir, kita menjernihkan memori yang digunakan dengan memanggil imagedestroy () .
Kita bisa mengakses dan melihat kotak biru kami dengan pergi ke
blue_square.php, atau bahkan lebih baik, kita bisa link ke index.php
pada kami seperti:
<Img src = 'http://themeforest.s3.amazonaws.com/65_gd/basic_square.php' alt ='' />
Dengan asumsi semua berjalan baik, Anda akan melihat kotak biru seperti di bawah:
Hello Dunia
Sekarang bahwa kita memiliki dasar-dasar yang sangat menciptakan
gambar, mari kita membuat gambar dengan beberapa teks dan font pilihan
kami. Kita dapat menggunakan font yang kita inginkan, asalkan font adalah Font TrueType (. Tff). Untuk beberapa contoh berikutnya saya akan menggunakan 'Advent' font yang Anda bisa
temukan di sini. Kami akan menciptakan 'Hello World' string di lapangan latar belakang abu-abu gelap. Mari kita lihat pada kode sumber pertama dan kemudian pergi ke setiap langkah.
<? Php
// Laporkan setiap kesalahan
ini_set ("display_errors", "1");
error_reporting (E_ALL);
// Mengatur jenis konten
header ('content-type: image / png');
// Buat gambar dasar kami aliran 300x300 piksel
$ Image = ImageCreate (300, 300);
// Set up beberapa warna, gunakan abu-abu gelap sebagai warna latar belakang
$ Dark_grey = ImageColorAllocate ($ image, 102, 102, 102);
$ Putih = ImageColorAllocate ($ image, 255, 255, 255);
// Set path ke jenis font sejati kita
$ Font_path = 'advent_light';
// Set string teks kami
$ String = 'Hello World!';
// Menulis teks kami untuk gambar yang ada.
imagettftext ($ image, 50, 0, 10, 160, font_path $ putih, $, $ string);
// Buat gambar akhir kami
imagepng ($ image);
// Hapus memori
imagedestroy ($ image);
?>
Menyimpan kode di sebuah file bernama 'hello_world.php' dan
mengaksesnya menggunakan teknik yang sama seperti yang kami sebutkan di
atas. Jadi apa yang berbeda di sini?
- Kami mengatur dimensi untuk 300 × 300 piksel dan menggunakan latar belakang abu-abu gelap.
- Perhatikan bagaimana kita menyatakan jalan font variabel bernama dan menggunakan nama font kita sebagai nilai?
Hal ini karena nantinya di script kita perlu mengetahui jalan untuk
font kita sehingga kita dapat menggunakan PHP untuk menggambar teks
kami. Juga mencatat dengan cermat bagaimana ada ekstensi. Mengutip manual:
Tergantung pada versi GD library PHP menggunakan, ketika file font yang
tidak dimulai dengan ttf terkemuka / kemudian. Akan ditambahkan.
Ini berarti karena file font kita tidak memiliki '/' di depannya, tff otomatis. Akan ditambahkan.
- Selanjutnya kita mengatur string kami, 'Hello World!', Dan menyimpannya dalam sebuah variabel untuk digunakan nanti.
- Fungsi utama yang perlu diperhatikan di sini adalah berikutnya, imagettftext () , yang mengambil 8 parameter.
Sumber daya $ image, mengapung $ ukuran, mengapung $ angle, int $ x,
int $ y, int $ warna, string $ berkas font, string $ text (dalam urutan
itu).
Simpan halaman ini dan mengaksesnya namun Anda inginkan, Anda harus mendapatkan gambar yang terlihat seperti di bawah.
Sudut itu!
Apakah Anda menangkap bahwa salah satu parameter dari fungsi imagettftext adalah 'angle'. Ini berarti kita dapat sudut string kita untuk beberapa hasil yang unik. Mari kita kembali kode kita dari atas dan sudut kami 'Hello World! " teks.
<? Php
/ / Laporkan setiap kesalahan
ini_set ("display_errors", "1");
error_reporting (E_ALL);
/ / Mengatur jenis konten
header ('content-type: image / png');
/ / Buat gambar dasar kami aliran 300x300 piksel
$ Image = ImageCreate (300, 300);
/ / Set up beberapa warna, gunakan abu-abu gelap sebagai warna latar belakang
$ Dark_grey = ImageColorAllocate ($ image, 102, 102, 102);
$ Putih = ImageColorAllocate ($ image, 255, 255, 255);
// Set path ke jenis font sejati kita
$ Font_path = 'advent_light';
// Set string teks kami
$ String = 'Hello World!';
// Menulis teks kami untuk gambar yang ada.
imagettftext ($ image, 50, - 45, 30, 70, $ putih, $ font_path, $ string);
// Buat gambar akhir kami
imagepng ($ image);
// Hapus memori
imagedestroy ($ image);
?>
Perhatikan bagaimana kita telah menambahkan sudut -45 derajat ke fungsi bukan nol (serta reposisi teks kita beberapa)? Ini adalah semua yang diperlukan untuk sudut beberapa teks ke gambar, Anda akan melihat sesuatu seperti gambar di bawah.
Apakah Anda bersenang-senang belum? Tidak ada? Nah, kemudian mari kita gunakan pendekatan yang lebih praktis dan menciptakan sesuatu yang dapat berguna.
Apa Tanggal tersebut?
Tidak hanya bisa kita membuat gambar dari awal, tapi kita bisa membuat gambar dari gambar yang ada!
Dengan sedikit kerja kita dapat dengan mudah membuat kecil 'kalender
icon' yang menampilkan tanggal saat ini (bulan, hari, tahun).
Sebuah pencarian Google yang sederhana untuk 'kalender kosong ikon'
dibesarkan ikon bebas svg. Bahwa saya diubah ukurannya dan diubah
menjadi. Png. Jadi Anda memiliki gagasan tentang apa yang saya bicarakan tentang Anda dapat melihat kalender kosong 'di bawah ini.
Sekarang bahwa kita memiliki kanvas untuk bekerja dengan, kita dapat
menggunakan GD berbagai fungsi tanggal PHP untuk membuat ini semua
datang bersama-sama.
Disclaimer: Saya bukan desainer dunia terbesar, ikon kosong yang lebih
baik dan pilihan font mungkin akan menjadi ide yang baik jika saya akan
menggunakan ini 'kalender ikon' di situs nyata. Aku akan meninggalkan merancang untuk kalian semua. Yang mengatakan, mari kita lihat kode final dan kemudian meninjau.
<? Php
// Laporkan semua Kesalahan
ini_set ("display_errors", "1");
error_reporting (E_ALL);
// Set jenis konten
header ('content-type: image / jpeg');
// Simpan nilai-nilai tanggal kami di variabel terpisah
Daftar ($ bulan, $ hari, $ tahun) = explode ('/', date ('F / jS / Y'));
// Load gambar dasar kami
$ Image = imagecreatefrompng ('calendar_blank.png');
$ IMAGE_WIDTH = imagesx ($ image);
/ Warna Setup / dan file font
$ Putih = ImageColorAllocate ($ image, 255, 255, 255);
$ Hitam = ImageColorAllocate ($ image, 0, 0, 0);
$ Font_path = 'advent_light';
// Dapatkan posisi string teks
$ Pos_month = imagettfbbox (13, 0, $ font_path, $ bulan);
$ Pos_day = imagettfbbox (25, 0, $ font_path, $ hari);
$ Pos_year = imagettfbbox (8, 0, $ font_path, $ tahun);
// Buat Bulan
imagettftext ($ image, 13, 0, ($ IMAGE_WIDTH - $ pos_month [2]) / 2, 40, $ putih, $ font_path, $ bulan);
// Buat Hari
imagettftext ($ image, 25, 0, ($ IMAGE_WIDTH - $ pos_day [2]) / 2, 80, $ hitam, $ font_path, $ hari);
// Buat Tahun
imagettftext ($ image, 8, 0, ($ IMAGE_WIDTH - $ pos_year [2]) / 2, 100, $ hitam, $ font_path, $ tahun);
// Buat gambar akhir
imagejpeg ($ image,'', 100);
// Hapus memori;
imagedestroy ($ image);
?>
Jadi apa yang terjadi di sini? Apa ini fungsi list ()? Semua baik pertanyaan, dan kami akan membahas mereka semua langkah demi langkah:
- Seperti biasa kami mengatur jenis header sehingga gambar akan ditampilkan dengan benar.
- On line 10 Anda akan melihat kita menggunakan fungsi daftar . Kami menetapkan nilai dari array tanggal (dikonversi ke array melalui meledak () ) dengan variabel di dalam fungsi daftar. Ini adalah cara mudah untuk mengambil informasi array dan menugaskan sekaligus untuk beberapa variabel. Kami sekarang dapat mengakses variabel $ bulan, $ hari, dan $ tahun individual.
- On line 22-24 kita menggunakan imagettfbbox ()
fungsi untuk mengambil kotak loncat dari string kami (singkatnya,
ukuran atau panjang), fungsi mengembalikan sebuah array nilai, sehingga
untuk mengakses pojok kanan bawah kita bisa menggunakan $ pos_month [2]. Kami memerlukan informasi ini sehingga kami dapat secara otomatis memposisikan teks kita dengan benar tidak peduli ukuran.
- Terakhir kita membuat setiap string dan menggunakan beberapa matematika dasar untuk posisi koordinat x dari string kita.
Dengan asumsi alam semesta tidak meledak, Anda harus mendapatkan gambar
seperti di bawah (kecuali tanggal harus menjadi apa pun tanggal saat
ini pada server Anda, di bawah ini adalah gambar statis dari hasilnya). Juga, berkat
catpin untuk bantuan dengan script.
Kucing dan Filter Gambar
Hal terakhir yang kita akan menyentuh pada hari ini adalah sangat menyenangkan
imagefilter () fungsi.
Fungsi imagefilter mengambil gambar didefinisikan pra dan menerapkan
filter ditentukan untuk gambar, seperti mengubah gambar ke grayscale. Mari kita lihat gambar kita akan bekerja dengan, benar-benar tersentuh.
Sekarang mari kita mengkonversi kitty gila untuk gambar grayscale menggunakan fungsi imagefilter.
<? Php
// Laporkan semua kesalahan
ini_set ("display_errors", "1");
error_reporting (E_ALL);
// Periksa untuk melihat apakah gambar sumber diatur
if (isset ($ _GET ['sumber'])) {
// Lakukan beberapa sanitasi yang sangat dasar dari string
$ Image = filter_var ($ _GET ['sumber'], FILTER_SANITIZE_STRING);
// Load gambar dari sumber yang disediakan
$ Image = imagecreatefromjpeg ($ image);
// Mengubah gambar ke gambar grayscale
imagefilter ($ image, IMG_FILTER_GRAYSCALE);
// Set jenis konten
header ('content-type: image / jpeg');
// Simpan gambar dengan kualitas 90 persen
imagejpeg ($ image,'', 90);
// Menjernihkan memori
imagedestroy ($ image);
}
?>
Saya telah membuat script di atas sedikit lebih fleksibel, sehingga
memberikan Anda pilihan untuk mengubah gambar apapun menjadi gambar
gray-scale dengan referensi seperti di bawah ini:
<Img src = 'http://themeforest.s3.amazonaws.com/65_gd/grayscale.php?source=cat.jpg' alt ='' />
Jelas, Anda bisa mengisi 'sumber' dengan path ke setiap gambar yang Anda ingin memilikinya dikonversi ke skala abu-abu.
Selanjutnya, silakan menerapkan langkah-langkah keamanan lebih lanjut
jika Anda berencana untuk menggunakan ini pada server hidup.
Juga script diatas mengharapkan untuk menerima gambar. Jpeg, Anda bisa
mendapatkan kreatif dan memilikinya menerima semua jenis gambar jika
Anda inginkan. Kucing Anda sekarang harus terlihat seperti gambar di bawah ini.
Lebih Filter
Untuk membungkus pelajaran ini, mari kita cepat melihat filter lain yang bisa kita gunakan dan hasil yang mereka hasilkan.
Kecerahan Filter
Menyesuaikan kecerahan gambar yang diberikan, parameter ketiga menyesuaikan kecerahan.
<? Php
header ('content-type: image / jpeg');
$ Image = imagecreatefromjpeg ('cat.jpg');
/ / Parameter 3rd menerima tingkat kecerahan.
imagefilter ($ image, IMG_FILTER_BRIGHTNESS, 40);
imagejpeg ($ image,'', 90);
imagedestroy ($ image);
?>
Gaussian Blur
Gaussian mengaburkan gambar, tidak ada parameter diterima.
<? Php
header ('content-type: image / jpeg');
$ Image = imagecreatefromjpeg ('cat.jpg');
imagefilter ($ image, IMG_FILTER_GAUSSIAN_BLUR);
imagejpeg ($ image,'', 90);
imagedestroy ($ image);
?>
Kontras
Parameter ketiga menerima tingkat kontras.
<? Php
header ('content-type: image / jpeg');
$ Image = imagecreatefromjpeg ('cat.jpg');
imagefilter ($ image, IMG_FILTER_CONTRAST, - 15);
imagejpeg ($ image,'', 90);
imagedestroy ($ image);
?>
Berarti Removal (efek sketsa)
Tidak ada parameter diterima.
<? Php
header ('content-type: image / jpeg');
$ Image = imagecreatefromjpeg ('cat.jpg');
imagefilter ($ image, IMG_FILTER_MEAN_REMOVAL);
imagejpeg ($ image,'', 90);
imagedestroy ($ image);
?>
Colorize
Menerima nilai merah, hijau, biru, dan alpha channel (opsional) dalam urutan itu.
<? Php
header ('content-type: image / jpeg');
$ Image = imagecreatefromjpeg ('cat.jpg');
/ / Parameter alpha channel dihilangkan bawah seperti opsional.
imagefilter ($ image, IMG_FILTER_COLORIZE, 50, 0, 0);
imagejpeg ($ image,'', 90);
imagedestroy ($ image);
?>
Sampai waktu berikutnya ...
Saya harap ini memberi Anda beberapa wawasan ke perpustakaan GD PHP. Pada bagian 2, kita akan membahas beberapa teknik yang lebih canggih, dan, tentu saja, bersenang-senang lagi.
artikel ini dikutip dari www*.themeforest.net
2 comments: