Dalam beberapa kasus, kita perlu membuat gambar dinamis dengan cepat dan menulis teks pada gambar di aplikasi web. Kalau kamu punya kebutuhan seperti ini, jangan khawatir kali ini saya akan memberikan contoh script PHP sederhana untuk convert teks ke gambar dengan PHP dan menyimpannya sebagai format PNG atau JPG.
Untuk mengontrol teks untuk proses pembuatan gambar, kita harus membuat class PHP. Dengan menggunakan class PHP ini kita dapat dengan mudah membuat gambar dan menambahkan beberapa teks ke gambar.
Kita akan menggunakan Libary GD untuk membuat dan memanipulasi file gambar dalam script PHP. Jadi sebelum kamu memulai, pastikan PHP GD sudah diinstal pada server kamu. Jika kamu menggunakan XAMPP, secara default, GD sudah aktif otomatis sejak XAMPP versi 1.7.0.
Class TeksKeGambar
Class TeksKeGambar akan membantu untuk menghasilkan gambar dan menambahkan teks ke gambar. Class TeksKeGambar berisi 4 fungsi dan fungsi tersebut akan melakukan hal berikut.
buatGambar()
– Menciptakan gambar dari teks. String teks harus diberikan agar dapat menulis pada gambar. Juga, kamu dapat menentukan ukuran font, lebar gambar, dan tinggi gambar.tampilkanGambar()
– Mengembalikan gambar yang dibuat oleh fungsi buatGambar().simpanKePng()
– Menyimpan file gambar sebagai format .png. Kamu dapat menentukan nama file dan lokasi untuk menyimpan gambar.simpanKeJpg()
– Menyimpan file gambar sebagai format .jpg. Kamu dapat menentukan nama file dan lokasi untuk menyimpan gambar.
<?php /** * class TeksKeGambar * Class ini digunakan untuk mengconvert teks ke gambar */ class TeksKeGambar { private $img; //Membuat gambar dari teks function buatGambar($text, $ukuranFont = 20, $lebarGbr = 400, $tinggiGbr = 80){ //path font $font = 'font/Tiempos_Text_Regular.otf'; //membuat gambar $this->img = imagecreatetruecolor($lebarGbr, $tinggiGbr); //memberi warna $white = imagecolorallocate($this->img, 255, 255, 255); $grey = imagecolorallocate($this->img, 128, 128, 128); $black = imagecolorallocate($this->img, 0, 0, 0); imagefilledrectangle($this->img, 0, 0, $lebarGbr - 1, $tinggiGbr - 1, $white); //ganti baris $pisahTeks = explode ( "\\n" , $text ); $baris = count($pisahTeks); foreach($pisahTeks as $txt){ $textBox = imagettfbbox($ukuranFont,$angle,$font,$txt); $lebarTeks = abs(max($textBox[2], $textBox[4])); $tinggiTeks = abs(max($textBox[5], $textBox[7])); $x = (imagesx($this->img) - $lebarTeks)/2; $y = ((imagesy($this->img) + $tinggiTeks)/2)-($baris-2)*$tinggiTeks; $baris = $baris-1; //menambahkan bayangan untuk teks imagettftext($this->img, $ukuranFont, $angle, $x, $y, $grey, $font, $txt); //menambahkan teks imagettftext($this->img, $ukuranFont, $angle, $x, $y, $black, $font, $txt); } return true; } //Menampilkan gambar function tampilkanGambar(){ header('Content-Type: image/png'); return imagepng($this->img); } //Simpan gambar sebagai format png function simpanKePng($namaFile = 'text-image', $lokasi = ''){ $namaFile = $namaFile.".png"; $namaFile = !empty($lokasi)?$lokasi.$namaFile:$namaFile; return imagepng($this->img, $namaFile); } //Simpan gambar sebagai format jpg function simpanKeJpg($namaFile = 'text-image', $lokasi = ''){ $namaFile = $namaFile.".jpg"; $namaFile = !empty($lokasi)?$lokasi.$namaFile:$namaFile; return imagejpeg($this->img, $namaFile); } }
Convert teks ke gambar di PHP
Menyertakan file TeksKeGambar.php
(class TeksKeGambar) dan membuat objek. Memanggil fungsi tampilkanGambar()
dan masukkan string teks. Kalo kamu ingin menambahkan baris baru, tambahkan “\n” sebelum baris baru.
//menyertakan class TeksKeGambar require_once 'TeksKeGambar.php'; //membuat object img $img = new TeksKeGambar; //membuat gambar dari teks $text = 'Codingan.\nTutorial pemograman web.'; $img->buatGambar($text);
Untuk menampilkan gambar gunakan fungsi tampilkanGambar()
.
//menampilkan gambar $image = $img->tampilkanGambar();
Untuk menyimpan file gambar sebagai format PNG atau JPG, gunakan fungsi simpanKePng()
atau simpanKeJpg()
. Tentukan nama file dan lokasi untuk menyimpan gambar, jika tidak, gambar akan disimpan dengan nama default ke direktori yang sama di mana script berada.
//simpan gambar sebagai format png $img->simpanKePng('hasil-convert','gambar/'); //simpan gambar sebagai format jpg $img->simpanKeJpg('hasil-convert','gambar/');
Kesimpulan
Di clas TeksKeGambar saya menggunakan font Roboto Black untuk teksnya. Kamu bisa mengganti fontnya, dan tempatkan font di direktori font/
dan tentukan path font dalam fungsi buatGambar()
di class TeksKeGambar. Kamu dapat mendownload Source code convert teks ke gambar di PHP dibawah ini.
Kalau untuk html ke jpg gimana gan..?
Maksudnya tampilan dari halaman html diconvert ke gambar .jpg?
Iya gan, jadi pas jadi gambar gk polos warnanya…
Terima kasih mas ardhia share ilmunya.
Ada pertanyaan, bagaimana spy pada saat klik save as di sisi user muncul pilihan jenis extensi jpg/png ya mas?
Karena saya test ternyata secara default extensi php selalu muncul pada saat akan disave. Jadi user harus ketik manual extensinya.
Syukron atas penjelasannya