PHP’de Görsellerde Metin ve Şekil Oluşturma

PHP'de Görsellerde Metin ve Şekil Oluşturma

Bir önceki makalede, PHP ile yüklenen ve görüntüleri manipüle etmeye odaklanmıştık. Öğrendik bir görüntüyü döndürme, yeniden boyutlandırma, ölçekleme veya çevirme. Biz de öğrendik farklı filtreler ve evrişim matrisi hakkında. Bu eğitimler aynı zamanda bir dizindeki tüm görüntüleri yeniden boyutlandırmak veya aynı anda birden fazla görüntüye filigran eklemek gibi GD kitaplığının bazı pratik kullanımlarını da kapsıyordu.

Normal görüntüleri işlemek için GD’yi kullanmanın yanı sıra, sıfırdan kendi görüntülerimizi de oluşturabiliriz. Elips, daire, dikdörtgen, çokgen ve basit çizgiler gibi temel şekilleri çizmek için kütüphanedeki farklı fonksiyonları kullanabiliriz. Biraz matematikle bu şekiller güzel desenler oluşturabilir. Ayrıca, birçok olasılığın önünü açan, işlenmiş görüntü üzerine metin çizmek için kullanılabilen işlevler de vardır.

Bu eğitim size PHP’de temel şekilleri nasıl çizeceğinizi ve en sevdiğiniz yazı tipini kullanarak nasıl metin oluşturacağınızı öğretecektir.

İşte gönderinin sonunda oluşturacağımız şeyin bir önizlemesi:

Poster Üzerindeki Metin ve DesenlerPoster Üzerindeki Metin ve DesenlerPoster Üzerindeki Metin ve Desenler

PHP’de GD ile Temel Şekiller Çizin

Bu bölümde temel şekilleri öğreneceğiz ve daha sonra çizgi kalınlığını, fırçaları ve çizgi stillerini ele alacağız.

Çizgi Çiz

kullanarak verilen iki nokta arasına basit bir düz çizgi çizebilirsiniz. imageline($image, $x1, $y1, $x2, $y2, $color) işlev. bu $image parametresi gibi işlevler kullanılarak daha önce oluşturulmuş olacak bir görüntü kaynağıdır. imagecreatetruecolor() veya imagecreatefromjpeg(). kullanacağız imagecreatetruecolor() sıfırdan yeni görüntüler oluşturmak için bu eğitim boyunca. İşlev, aşağıdaki durumlarda yatay bir çizgi çizecektir: $y1 eşittir $y2. Benzer şekilde, eğer dikey bir çizgi çizecektir: $x1 eşittir $x2.

Daireler ve Yaylar Çiz

İşlev imagearc($image, $cx, $cy, $width, $height, $start, $end, $color) kullanarak dairesel yaylar çizebilir $cx ve $cy merkezi olarak. bu $width ve $height parametreler, farklı eksenlerdeki arkın boyutunu belirler. bu $start ve $end parametreler, yayın başlangıç ​​ve bitiş açısını derece olarak belirtir. 0’dan 360 dereceye kadar tam yaylar çizmek istiyorsanız, alternatifi kullanabilirsiniz. imageellipse($image, $cx, $cy, $width, $height, $color) işlev.

Dikdörtgenler ve Çokgenler Çiz

kullanarak bir görüntünün üzerine dikdörtgenler çizebilirsiniz. imagerectangle($image, $x1, $y1, $x2, $y2, $color) işlev. bu $x1 ve $y1 değerler dikdörtgenin sol üst köşesini belirler. bu $x2 ve $y2 değerler sağ alt köşeyi belirler. Ayrıca bir imagepolygon($image, $points, $num_points, $color) Herhangi bir sayıda kenar veya nokta içeren bir çokgen oluşturabilen işlev. bu $points parametre, belirli bir noktanın koordinatlarını almak için iki öğenin eşleştirildiği bir dizidir.

denilen başka bir işlev imageopenpolygon() ilk ve son nokta arasına bir çizgi çizmeyen PHP 7’ye eklendi.

Bir Çizim Oluşturmak İçin Birleştirme

Aşağıdaki örnekte, bir kulübe, güneş ve zemin ile bir çizgi çizimi oluşturmak için tüm bu fonksiyonları kullandık.

Burada önemli olan sadece farklı koordinatların değerini bulmaktır. Her şeyi orijinal görüntünün boyutuna göre çizmek istedim, bu yüzden $img_height ve $img_width farklı noktaların koordinatlarını hesaplamak için değişkenler.

PHP GD'de Çizgi ÇizmePHP GD'de Çizgi ÇizmePHP GD'de Çizgi Çizme

Çizgi Kalınlığını, Stili ve Renk Dolgularını Kontrol Etme

Yukarıdaki görüntüde çok ince çizgiler ve renklendirme olmaması gibi birkaç sorun var. Tüm bu sorunlar, aşağıdaki gibi işlevler kullanılarak kolayca çözülebilir: imagesetthickness() ve imagefilledrectangle().

Hat kalınlığı

bu imagesetthickness($image, $thickness) işlevi dikdörtgenler, çokgenler, yaylar vb. çizerken oluşturulan çizgilerin kalınlığını ayarlar. $thickness 5’e kadar kullanılarak çizilen herhangi bir rakamı yapacaktır imagerectangle(), imagearc(), imagepolygon()vb. 5 piksel kalınlığında.

Dolgulu Şekiller Çizimi

Her çizim fonksiyonunun, belirli bir şekli belirli bir renkle dolduran doldurulmuş bir renk versiyonu da vardır. Örneğin, imagefilledrectangle() çizilen dikdörtgeni verilen renkle dolduracaktır.

Fırçaları Kullanma

Çok kullanışlı bir GD işlevi imagesetbrush($image, $brush). bu $brush Bu fonksiyondaki parametre, çizgiler çizmek için kullanılabilecek başka bir görüntü kaynağıdır. Örneğin, resminize güzel çiçek desenleri eklemek için bir çiçeğin şeffaf vektör çizimini fırça olarak kullanabilirsiniz. Aşağıda verilen kod parçası, bir nokta çizilirken bir bulutun görüntüsünü fırça olarak kullanmak için yazılmıştır. Bu, gökyüzümüze tek bir bulut ekler.

Bunu buldum bulut görüntüsü Pixabay’de ve projemiz için uygun bir boyuta küçültüldü.

Kulübe görüntüsünün tam kodu aşağıda verilmiştir. Her şeklin iki versiyonunu ekledik, biri taslağı çizmek için, diğeri rengi doldurmak için.

Bu, yukarıdaki PHP GD kodunun nihai sonucudur.

PHP GD Dolgulu Kulübe RengiPHP GD Dolgulu Kulübe RengiPHP GD Dolgulu Kulübe Rengi

Resimlerde Metin Oluşturma

PHP GD, yatay veya dikey yönde birden çok karakter veya yalnızca bir karakter oluşturmanıza izin veren dört farklı işlevle birlikte gelir. Bu işlevler imagechar(), imagecharup(), imagestring()ve imagestringup(). Hepsi aynı altı parametreyi kabul ediyor, bu yüzden sadece imagechar() burada işlev görür.

bu $font parametre imagechar($image, $font, $x, $y, $string, $color) işlev, yalnızca oluşturulan metnin boyutudur. Yalnızca 1’den 5’e kadar tamsayı değerleri kabul eder. $string parametre, oluşturmak istediğiniz metindir. Karakter işlevlerine çok karakterli bir dize iletirseniz, görüntüde yalnızca ilk karakter işlenir. bu imagecharup() ve imagestringup() işlevler metni aşağıdan yukarıya dikey olarak işler.

Metin oluşturma söz konusu olduğunda, yukarıda tartıştığımız dört işlev çok sınırlıdır. En büyük yazı tipi boyutu değerinin bile normal kullanım için çok küçük olduğunu göreceksiniz. Ayrıca metin sadece yatay ve dikey olarak yazılabilir.

Neyse ki, GD’nin de bir imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text) Metni istediğiniz herhangi bir yazı tipinde oluşturabilen işlev. bu $fontfile parametresi, metni görüntülemek için kullanmak istediğiniz TrueType yazı tipinin yolunu belirtmek için kullanılır. bu $x ve $y parametreler, oluşturulan metnin başlangıç ​​konumunu belirler.

Aşağıdaki örnek, bazı güzel metin efektleri oluşturmak için tüm bu işlevleri kullanır.

Gördüğünüz gibi, temel metin gölgeleri gibi bazı efektler oluşturmak için aynı metni aynı yazı tipiyle biraz farklı konumlarda oluşturduk. Akılda tutulması gereken önemli şey, herhangi bir metin işlevi tarafından oluşturulan metnin, çakışma durumunda altındaki metni tamamen gizleyeceğidir. Yukarıdaki kodu çalıştırdıktan sonra elde edilen son görüntü.

PHP GD MetniPHP GD MetniPHP GD Metni

Basit Tasarımlar ve Posterler Oluşturma

Şimdiye kadar edindiğimiz tüm bilgileri, metin ve şekil karışımıyla basit posterler veya resimler oluşturmak için kullanalım. Bu resimdeki gibi bir şeyi yeniden yaratmaya çalışacağım. PHP görüntü işleme renk değişimi yaptığımız öğretici. Hesaplarımızı basit tutmak için eşmerkezli daireler çizeceğiz.

Bu bölümde kullanacağımız yeni bir fonksiyon imagettfbbox(). Temel olarak bize TrueType yazı tiplerini kullanarak yazmak istediğimiz metnin sınırlayıcı kutusunu verir. Metnimizi, genişliğinin veya yüksekliğinin görüntünün belirli bir kısmına ulaşması için ölçeklendirmek için işlevi kullanacağız. Bundan sonra, metnimizi kullanarak resmin üzerine çizebiliriz. imagettftext() işlev.

20 puntoluk bir temel yazı tipi boyutuyla başlıyoruz ve ardından hem genişlik hem de yükseklik tanımlanan sınır dahilinde olduğu sürece 4’e kadar artırmaya devam ediyoruz. Uygun yazı tipi boyutuna ulaştığımızda, döngüden çıkıyoruz ve kullanarak metni görüntü üzerinde oluşturuyoruz. imagettftext().

PHP GD'de Metni BüyütmekPHP GD'de Metni BüyütmekPHP GD'de Metni Büyütmek

Şimdi resmin sol alt ve sağ üst köşelerine dolgulu eşmerkezli dairelerimizi eklemek için resmi kaydettiğimiz son satırdan önce aşağıdaki kodu ekleyebiliriz.

Poster Üzerindeki Metin ve DesenlerPoster Üzerindeki Metin ve DesenlerPoster Üzerindeki Metin ve Desenler

Gördüğünüz gibi, biraz matematik ve bazı yerleşik PHP GD işlevlerini kullanarak kolaylıkla ilginç desenler oluşturmak mümkün.

Son düşünceler

Bu öğreticinin amacı, PHP’de sıfırdan temel şekiller çizmek için farklı GD işlevleriyle tanışmanızı sağlamaktı. Biraz matematik yardımıyla, normal çokgenler, yuvarlak dikdörtgenler gibi daha karmaşık şekiller oluşturmak için bu işlevleri kullanabileceksiniz.

PHP GD ayrıca bir resim üzerinde metin oluşturmak için birkaç kullanışlı fonksiyona sahiptir. Güzel bir yazı tipinin kullanılması, işlenen metnin farklı dosya yollarından yüklenen normal resimlere yerleştirildiğinde garip görünmemesini sağlayacaktır.

PHP’de daha süslü metin efektleri yarattınız mı? Lütfen bunları bizimle paylaşın forum.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.