15 Eylül 2015 Salı

ASP Jpeg ile resmin ortasına yazı veya resim ekleme

Merhaba.

Uzun süredir ASP tabanlı web kodları üzerine çalışmalar yapıyorum. Günümüzde ASP ile kodlama bitmek üzere olmasına rağmen, geçmiş zamanlarda ASP ile yazılmış olan bir çok site ve program mevcut.

ASP üzerine bir çok script ve yayın olmasına rağmen halen günümüzde bu kodlarla uğraşırken ben bile eksikliklerini hissediyorum. Araştırmalarım sonucunda tabi ki bende hayal kırıklığına uğruyorum. Bu nedenle bir çok kodu kendi başıma deneme yanılma yönü ile çözüyorum.

Bu bloğu da bu tür kodları ihtiyacı olanlarla paylaşmak için açtım.

İlk olarak ASP Jpeg resim işleme bileşeni ile başlayacağım.

ASP Jpeg bilindiği gibi, servera bir resim yolladığımızda resim üzerinde değişiklikler yapmamızı sağlayan bir bileşen. Yollanan resimler üzerinde bir çok işlem yapabiliyoruz. Kırpma, soldurma, resim üzerine resim veya yazı ekleme vb.

Bu yazımda ASP Jpeg bileşeni kullanarak resim üzerine yazı eklemeyi işleyeceğim. İnternet üzerinde bu konu ile ilgili bir çok makale mevcut. Ancak ASP Jpeg ve internet üzerinde bulamayacağımız  bir işlem, Resmin üzerine ekleyeceğimiz yazıyı veya resmi resmin tam ortasına işlemek.

Bu işlemi bende çok aramama rağmen hiç bir yerde bulamadım. Bende kendim bazı işlemler ile başardım

Şimdi scripte geçelim. Bileşenin elinizde olduğunu var sayıyorum.

Konu : ASP Jpeg ile resmin ortasına yazı veya resim ekleme


'İlk olarak resim dosyamızın upload işlemini yapıyoruz
Set Upload = Server.CreateObject("Persits.Upload")
               
            'Aynı dosya üzerine yazmayı kapattık. Yoğun resim kullanan serverlarda bunu kapayın
            Upload.OverwriteFiles = False
            
            'Dosyayı kaydediyoruz.
           Upload.Save
       
       'Dosyayı asp dosyasından çağırıyoruz
       Set File = Upload.Files("imgfile")
         
          'Resmin uzantısını alıyoruz. Asp "Right" komutu ile sağdaki son 3 karakteri alıyoruz. Bu resmin uzantısına denk geliyor
          resim_tipi = right(File.Filename, 3)
          'Resmin adını değiştiriyoruz. İstediğimiz herhangi birşey olabilir
         yeniAd = "yeni_resim_adi"." & resim_tipi
   
'Resmin yeni adı ile birlikte resim klasörümüze ekliyoruz.
      File.SaveAs Server.MapPath("resimler") & "\" & yeniAd

      'ASP Jpeg bileşenini açıyoruz.
      Set Jpeg = Server.CreateObject("Persits.Jpeg")

      'Dosya yolunu çağırıyoruz.
Jpeg.Open File.Path

'Burada resmin boyutu çok büyükse belli bir ebata ayarlıyoruz.
'Eğer ki resmin uzunluğu 900 pikselden büyükse
'Değilse işlem yapmayacak ve direk olarak diğer işleme geçecek

If Jpeg.OriginalWidth > 900 Then

'Resmin boyutunu 900 piksel olarak ayarlıyoruz
Jpeg.Width = 900
                        'Resmin yüksekliğini ayarlıyoruz.
                        'Burada resmin orjinal yüksekliği ile bizim belirlediğimiz uzunluğa çarpıp işlemi kapamadan orijinal uzunluğuna bölüyoruz. Bu şekilde resmin uzunluk yükseklik oranı düzgün bir şekilde yapılıyor. 
                        'Eğer ki resmin yüksekliğini el ile belirlersek resimde genişleme ve uzunlama olacak ve bozulacaktır.
Jpeg.Height = jpeg.OriginalHeight * jpeg.Width / jpeg.OriginalWidth

                        'Resimde yaptığımız küçültme işleminden sonra piksel bozulmalarını almak için keskinleştirme uyguluyoruz.
Jpeg.Sharpen 1, 150

End If

'Yazıyı tam resim ortasına eklemek için resmin yatay ortasını buluyoruz
yazi_merkezleme_yatay = Jpeg.Width / 2
  'Yazıyı tam resim ortasına eklemek için resmin dikey ortasını buluyoruz
yazi_merkezleme_dikey = Jpeg.Height / 2

'Resmin ortasını bulduk. Ancak yazı tam ortadan başlayacağı için sağ kısma doğru kayma olacaktır.
'Bunun için yazıyı biraz sola çekiyoruz. Burada bulduğumuz yatay merkezin tekrardan merkezini buluyoruz.
yazi_merkezleme_yatay = yazi_merkezleme_yatay / 2


Text = "Copyright © " & year(Now) & " Eklemek istediğiniz yazı"
                        'Yazı yerine resim eklemek isterseniz burayı aktifleştirin ve X,Y koordinatlarını ister kendiniz belirleyin isterseniz aşağıdaki gibi merkeze ekleyin.
                        'jpeg.Canvas.DrawPNG 50, 350, "http://www.logoadresi.com/logo.png"
jpeg.Canvas.Font.Size = 20 'Font büyüklüğü
jpeg.Canvas.Font.Opacity = 0.5 'Font saydamlığı
jpeg.Canvas.Font.Width = 500 'Font genişliği(ekleyeceğiniz yazı uzunsa buradan belirleyin
jpeg.Canvas.Font.Align = 3 '0:Yazı solda, 1:Yazı sağda, 2:Merkezde, 3:sağa sola dayalı
jpeg.Canvas.Font.Spacing = 2 'Font karakter genişliği
Jpeg.Canvas.Font.Bold = True ' Font kalın yapıyoruz
Jpeg.Canvas.Font.Quality = 4 ' Font kalitesi
Jpeg.Canvas.Font.BkMode = "Opaque" ' Opaklama yapıyoruz
                        'Bu kısımda yazıyı resme ekliyoruz. internette bulacağınız tüm kodlarda burada belli bir değer vardır. Bu da yazının X,Y koordinatlarını belirler. 
                        'Biz burada X,Y koordinatı olarak bulduğumuz merkezleri kullanıyoruz.
                        'Ayrıca font karakterini de belirliyoruz.
jpeg.Canvas.PrintTextEx Text, yazi_merkezleme_yatay, yazi_merkezleme_dikey, Jpeg.WindowsDirectory & "\Fonts\Arial.ttf"

                        'Resmi değiştirdik. Artık servera kayıt ediyoruz.

Jpeg.Save Server.MapPath("urunler") & "\" & File.FileName

**************************************************************

Bundan sonra veri tabanına kayıt işlemleri yapılabilir.

Takıldığınız konularda bana mesaj atabilirsiniz.


İnternetteki makalelere göre resim üzerindeki yazı
Kendi kodlarımıza göre resim üzerindeki yazı




KOLAY GELSİN