Fun dengan PHP GD Library: Part 1
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.
<? 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);
?>
- 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 () .
<Img src = 'http://themeforest.s3.amazonaws.com/65_gd/basic_square.php' alt ='' />
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);
?>
- 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).
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);
?>
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. <? 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);
?>
- 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.
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.<? 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); } ?>
<Img src = 'http://themeforest.s3.amazonaws.com/65_gd/grayscale.php?source=cat.jpg' alt ='' />
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
up sangat bermanfaat
ReplyDelete