Giris

$mesaj

Üye Adi Sifre
| Üye ol

Online Sayisi : 34 Toplam Üye Sayisi : 1586 Son Üye : okan109

Tarih 2008:Nov:Sat

Kategoriler
  • ACPI [0]

  • Action Script [5]

  • Ajax [7]

  • ASP [17]

  • ASP.NET [23]

  • Assembly [3]

  • Bash [1]

  • C [6]

  • C# [9]

  • C++ [12]

  • Cobol [1]

  • Css [20]

  • Delphi [31]

  • Flash [5]

  • Html [9]

  • JAVA [36]

  • Java Script [17]

  • JSF [2]

  • Jsp [6]

  • Lua [1]

  • Matlab [2]

  • MySQL [31]

  • Oracle [1]

  • Pascal [31]

  • Pear [3]

  • Perl [22]

  • Photoshop [2]

  • PHP [169]

  • Python [9]

  • REXX [6]

  • Ruby [4]

  • SEO [5]

  • Visual Basic [37]

  • PHP / PHP ile Resim Üzerine Yazı Ekleme ve Kaydetme
    PHP ile Resim Üzerine Yazı Ekleme ve Kaydetme
    Yazar: SahinBey
    Eklenme: 13/08/08    Okunma: 771    
     
     

    Merhaba arkadaşlar,
    Şimdi öncelik olarak verilerimizi gondereceimiz bir form'a ve form öğelerine ihtiyacımız var.
    form.html
    [PHP]
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
    </head>
    <body>
    <form action="yukle.php" method="post" enctype="multipart/form-data" name="resimyukle">
      <input type="file" name="resim" id="resim" />
      <input type="submit" name="yukle" value="yükle" />
    </form>
    </body>
    </html>[/PHP]
    bu şekilde formumuzu hazırladık.
    İsterseniz form'un hazırlanması ile ilgili bir kaç anlatım yapayım.
    ilk olarak html kodumuzu başlattık ve head tagları arasına sayfamızın dil yapısını ve tipini tanıttık yani dil olarak (iso-8859-9 (türkçe)) tip olarakta (content="text/html (html)) ve <form etiketiyle formumuzu başlattık. ve buna muteakip hemen formun işlemden sonra "Submit" yapılacağı adresi Action ile belirledik (yukle.php). akabinde method'unu POST olarak belirledik Ayrıca GET ile belirlesek verilerimiz URL'de gözükecektir. bu method argumanlarını konumuz ile dolaylı yonden ilgili olsa bile direct ilgili olmadığı için es geçiyor ve sonraki işlemleri anlatıyorum. enctype bunu multipart/form-data bunu belirtmemizin sebebi eğer bu formdan herhengi bir istemci-sunucu ile ilgili bir öğe göndererek temp klasorunu kullanacak.
    sonrasında bir input oluşturduk ve tipi file olarak belirledik. adınada resim dedik isim kısmını ilerde kullacağımız _FILES değişkeni için verdik.
    sonrasında bi submit tipi ile bir gonder butonu oluşturduk bu işlemimizi ve action'unun gideği adrese verileri alıp yonlenmemiz için lazımdır.
    şimdi Form işlemini anladıktan sonra yukle.php ve asıl konumuz olan işlemlere gelelim.
    buradada aynı şekilde tek tek anlatmaya gayret edeceğim.
    yukle.php
    [PHP]<?php
    $tr = array("ç","Ç","Ğ","ğ","ı","ö","Ö","ş","Ş","ü","Ü","','","İ","(",")","\"","/","','","I"," ","?","%","!","'","+","&","=",",","{","}","[","]","æ","Æ","@","ß","®","^^","#",">","<","£","$","½",";","*","|","^","~","'\'");
    $trtemiz = array("c","C","G","g","i","o","O","s","S","u","U","-","i","-","-","-","-","-","i","-","i","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-");
    $yazi = "Semih VURAL";
    $alinan_yer = $_FILES["resim"]["tmp_name"];  
    $alinanin_adi = $_FILES["resim"]["name"];
    $dosyaadiyeni = str_replace($tr,$trtemiz,$alinanin_adi);
    $rastgele_rakam=md5(rand(1111111,999898989));
    $resim1 = $rastgele_rakam."-".md5(time()).$dosyaadiyeni;
    $kaydedilecek_yer = "resimler/".$resim1;
    move_uploaded_file($alinan_yer,$kaydedilecek_yer);
    $resmimiz = $_FILES["resim"]["type"];
      switch($resmimiz) {
          case 'image/jpeg':
              $resmimiz = imagecreatefromjpeg($kaydedilecek_yer);
              break;
          case 'image/png':
              $resmimiz = imagecreatefrompng($kaydedilecek_yer);
                break;
          case 'image/gif':
              $resmimiz = imagecreatefromgif($kaydedilecek_yer);
              break;
          default:
              echo "resim tipi değil falan filan yada header(location: sdasdasd.php)";
              break;
      }
    $neresine_yazilsin_ust = "25";
    $neresine_yazilsin_sol = "100";
    $yazi_tipi = "yazitipi.ttf";
    $yazi_boyutu = "15";
    $yazi_dongusu = "0";
    $kalitesi = "100";
    $beyaz_renk = imagecolorallocate($resmimiz, 255,255,255);
    imagettftext($resmimiz, $yazi_boyutu, $yazi_dongusu, $neresine_yazilsin_sol, $neresine_yazilsin_ust, $beyaz_renk, $yazi_tipi, $yazi);
    imagejpeg($resmimiz,$kaydedilecek_yer,$kalitesi);
    ?> [/PHP]
    Evet arkadaşlar bayağı bi yoruldum asıl şimdi başlıyor:) sıra ile anlatayorum işlemleri....
    1. Satır : $tr = array("ç","Ç","Ğ","ğ","ı","ö","Ö","ş","Ş","ü","Ü","','","İ","(",")","\"","/","','","I"," ","?","%","!","'","+","&","=",",","{","}","[","]","æ","Æ","@","ß","®","^^","#",">","<","£","$","½",";","*","|","^","~","'\'");
    Buarada $tr adlı değişkenimize Türkçe karakterleri ve hemen hemen aklıma gelen bütün ıvır zıvır karakterleri yazdım.
    -------------------------------------------------------------
    2. Satır : $trtemiz = array("c","C","G","g","i","o","O","s","S","u","U","-","i","-","-","-","-","-","i","-","i","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-","-");
    Buarada $trtemiz adlı değişkenimize Türkçe karakterleri ve hemen hemen aklıma gelen bütün ıvır zıvır karakterlerin karşılığını alacak yani değiştirecekleri yazdım.
    ---------------------------------------------------------------------
    3. Satır : $yazi = "Semih VURAL";
    burada ise malumunuz resimin üzerine gelecek yazıyı yazıyor
    -------------------------------------------------------------------------
    4 Satır : $alinan_yer = $_FILES["resim"]["tmp_name"];
    burada files super global değişkeni ile aldığımız resmimizin tmp_name sini yani geçici adını alıyoruz ve $alinan_yer adlı değişkenimize atıyoruz.
    -------------------------------------------------------------------
    5. Satır : $alinanin_adi = $_FILES["resim"]["name"];
    burada, files super global değişkeni ile aldığımız resmimizin adınızı alıyoruz. ve $alinanin_adi adlı değişkene referans amaçlı atıyoruz.
    --------------------------------------------------------------------------
    6. Satır : $dosyaadiyeni = str_replace($tr,$trtemiz,$alinanin_adi);
    burada $dosyaadiyeni adlı değişkenimizi başlattık ve değer olarak str_replace ile $tr,$trtemiz,$alinanin_adi gibi argumanlar ile işledik.
    bunu biraz açıklamak istiyorum.
    buradaki işlem şudur : $tr adlı değişkendeki bütün değişkenler sırası ile $trtemiz adlı değişkenimizle değiştirilmekte (sıraı ile dedim çunku array fonksiyonu var ikisindede) sonrada değişen bu değer $alinanin_adi adlı değişkenin içindeki bütün karakterleri kontrol eden ve uyuşan varsa hemen değiştirir.
    ---------------------------------------------------------------
    7. Satır : $rastgele_rakam=md5(rand(1111111,999898989));
    burada $rastgele_rakam adında bir değişken oluşturduk ve 1111111 ile 999898989 arası sayfa her yenilendiğinde bu sayıların arasında bir rakam oluştur dedik (223232323 gibi...) ve sonrada bu oluşan rakamı md5'e çevirdik. Çıkan sonuç 32 bitlik bir şifreleme algoritmasıdır.
    ------------------------------------------------------------------------
    8. Satır : $resim1 = $rastgele_rakam."-".md5(time()).$dosyaadiyeni;
    burada, $resim1 isimli bir değişken başlattık ve değerleri ise şunlar :
    $rastgele_rakam, md5(time()) ve $dosyaadiyeni
    bunların hepsini birleştir ve başlattığımız $resim1 adlı değişkene ata.
    Bu arada dikkat ederseniz time() ıda md5 işe aldık time() şimdiki zamanı saniye cinsinden verir. Biliyorum abarrtık bu şifreleme işini :)
    ----------------------------------------------------------
    9. Satır : $kaydedilecek_yer = "resimler/".$resim1;
    burada $kaydedilecek_yer adlı değişkenimizi oluşturduk ve değer olarak resimler/".$resim1 değerini verdik burada resimler klasorunu ifade eder yani resmin sitemizdeki kaydedileceği dizin. .$resim1 değikeni ise yukarda belirttiğimiz referans değişkenin içeriğidir.
    Tabiiki resmin adıda az evvel oluşturduğumuz md5'ler ile birlikte ve resmin orginal temizlenmiş hali ile kaydedecek.
    ----------------------------------------------------------------------
    10. Satır : move_uploaded_file($alinan_yer,$kaydedilecek_yer);
    burada, move_uploaded_file() fonksiyonu yardımı ile resmi temp dosyasına attığımız yerden (yani $alinan_yer) alıyoruz ve $kaydedilecek_yer adlı değişkenimizde yere kaydediyoruz. Ayrıca copy() Fonksiyonunuda kullanabilirdik.
    ---------------------------------------------------------------------
    11. Satır : $resmimiz = $_FILES["resim"]["type"];
    burada, yuklediğimiz resmin tipini type argumanı sayesinde buluyoruz. (tabii ben burada image/jpeg vs vs.. diye aldım yani direck sunucu taraf tanımlama) ve $resmimiz adlı değişkene atadım.
    ----------------------------------------------------------------
    12. Satır :     switch($resmimiz) {
    burada switch case kontrol yapısı başlattık. Switch case PHP'nin kontrol yapısı vardır. Tıpkı "if else" ve "?" olduğu gibi.
    -----------------------------------------
    13, 14 ,15. Satırlarımız :         case 'image/jpeg':
              $resmimiz = imagecreatefromjpeg($kaydedilecek_yer);
              break;
    ilk olarak case ile belirti yaptık ve dedikkki eğer yuklenen resmin tipi image/jpeg ise imagecreatefromjpeg($kaydedilecek_yer); bu fonksiyon çalışsın bu fonksiyon ise imagecreatefromjpeg olduğu için eğer resim jpeg ise bu çalışacak. dikkaet ederseniz sonunda fromjpeg var.
    ve eğer evet gelen resim jpg ise break yapısı ile sonraki işlemlere geçmeden işlemi bitir dedik. yani sonraki caselere kadar inmeyip sunucuyuda boşa yormamış olacak. (aslında if-else yapıı ile örnek verecektim ama switch case hakkında az insanların bilgisi var diye seçtim bunu)
    -----------------------------------------------------------------
    16, 17, 18. Satırlarımız :       case 'image/png':
              $resmimiz = imagecreatefrompng($kaydedilecek_yer);
                break;
    burada ise yine aynı şekilde yukarda anlattığım işlemin aynısı işliyor ama tek farkı (olması gereken fark) burada png kontrolu yapıyoruz. dikkat ederseniz sonunda fromjpng var.
    ----------------------------------------------------------------------
    19, 20, 21. Satırlarımız :         case 'image/gif':
              $resmimiz = imagecreatefromgif($kaydedilecek_yer);
              break;
    aynı işlem ama farkımız gif sonunda fromjgif var.
    ----------------------------------------------------------
    22, 23, 24. Satırlarımız :       default:
              echo "resim tipi değil falan filan yada header(location: sdasdasd.php)";
              break;
    Evet, burada ise eğer bu saydıklarımızın yani jpg, png ve gif yoksa default yardımı ile şu işlemi yap dedik. (echo yada yonlendir yada return FALSE olarakta belirleyebilirdik.)
    --------------------------------------------------------------------
    25. Satır : $neresine_yazilsin_ust = "25";
    burada artık resmimiz ve GD kütüphanesi ile ilgili işlemler boy göstermekte...
    $neresine_yazilsin_ust dediğim yerde değer olarak 25 demişim bu şu demek oluyor "yazı resmin ust tarafında tam olarak nerye yazılsın"
    eğer bunu 100 yaparsanız farkı göreceksiniz.
    -----------------------------------------------------------------------
    26. Satır : $neresine_yazilsin_sol = "100";
    burada ise resmin sol taraftaki farkını belirtmişim yani soldan gelirken yazı soldaki boşluk diyebiliriz. ve değişken olarak $neresine_yazilsin_sol değişkenini atadık.
    --------------------------------------------------------------------
    27. Satır : $yazi_tipi = "yazitipi.ttf";
    işin en güzel tarafı...
    istediğimiz yazı tipini kullanmak..
    ben şimdi ek olarak yazı tipi hizmeti veren bir sitede verecem size Yazı Tipi - Yazı Tipleri | www.yazitipi.com siz kendinizde sevdiğiniz bir yazı tipi varsa onu eklersniiz. ama bu yazı tipi işlem yapılan yani yukle.php nin altında olacak. c:/windows/fonts ta falan değil. ok?
    --------------------------------------------------------
    28. Satır : $yazi_boyutu = "15";
    burada ise yazıının boyutunu ayarlıyoruz. 15 değilde 20 yapabilirz vs vs...
    ------------------------------------------------------------------
    29. Satır : $yazi_dongusu = "0";
    evet burada yazı dongusu demişim ama aklıma başka bişi gelmedi :) ne demektir yazı dongusu?
    bu değeri 20 30 vs vs.. yaparsanız anlarsınız ben yinede anlatayım burada yazıyı sağdan yukarı doğru eğer.
    ------------------------------------------------------------
    30. Satır : $kalitesi = "100";
    evet burada istediğiniz kalitede kaydeder resmi ben 100 demişim zaten 100 maxsimumdur.
    eğer 0 yaparsanız göreceksiniz ki resim çok bozulmuş. ama tabii ki boyut farkı var.
    -------------------------------------------------------------------
    31. Satır : $beyaz_renk = imagecolorallocate($resmimiz, 255,255,255);
    burada ise yazının rengini seçtik ve renk olarak 255,255,255 değerlerini yazni beyazı atadık eger siyah olmasını isterseniz 0,0,0 yapın.
    -------------------------------------------------------------------
    32. Satır : imagettftext($resmimiz, $yazi_boyutu, $yazi_dongusu, $neresine_yazilsin_sol, $neresine_yazilsin_ust, $beyaz_renk, $yazi_tipi, $yazi);
    Evet... burada bütün işlem burada yatıyor :) Nihayet emeklerimizin karşılığını bu imagettftext verecek :)
    arkadaşları burayı anlatmasam? valla yoruldum bi sigara içeyim..
    Zaten belli ne olduğu yukardaki değerleri anlatmışım zaten arguman arguman değişkenlerle iş yapıyor bu kısım. valla es geçtim :D
    -----------------------------------------------------------------------
    33. Ve Nihayet Son Satır :
    imagejpeg($resmimiz,$kaydedilecek_yer,$kalitesi);
    evet arkadaşlar burada ise resmin kalitesini belirledik ve yolumuza devam ettik.
    -------------------------------------------------------------------------
    Evet arkadaşlar işte bu kadar hepsi.
    umarım kişi yada kişilere yardmımım dokunmuştur.
    Semih VURAL
    WEBAS İnternet ve Programlama Hizmetleri
    Kolay Gelsin.
    NOT : Arkadaşlar bu uygulma için GD Kütüphanesinin aktif olması lazım.
    Eğer ektif değilsede php.ini dosyanızda ;extension=php_gd2.dll
    diye bi yer olacak oradan başındaki ";" işaretini kaldırın ve kaydedin.
    bu kadar.
    Herkese Kolay Gelsin.
    Kaynak : DoguBey


    Bu Kategoriye Ait Diğer Makaleler
    Başlık Tarih Hit
    PHP File Exists 2008-10-12 15:25:13 300
    PHP ile Bot Yapımı ve Sitelerden veri çekmek 2008-10-10 20:21:43 673
    Php ile Online sayac yapalim 2008-10-7 23:19:13 440
    Resim Yüklerken Küçük Resim Oluşturma Kodu 15/09/08 434
    php ile dosya upload ve veritabanına dosya ismini yazdırmak 15/09/08 383
    PHP ile Resim Üzderine Yazı Ekleme ve Kaydetme (anlatım) 13/09/08 360
    PHP’ye Namespace desteği 12/09/08 104
    PHP Podcastleri 12/09/08 172
    PHP 5.2 ile Dosya Yüklemelerini Takip Özelliği 12/09/08 198
    PHP & Json ve Twitter’dan Veri Çekmek 12/09/08 109
    Linke Gelince Değişen Resim (Javascript Rollover) 11/09/08 335
    Php ile Txt ziyaretçi sayaci yapalim 11/09/08 328
    HTML Dosyalarının İçine Php Kodlarını Ekleme 05/09/08 323
    PHP ile Resim Üzerine Yazı Ekleme ve Kaydetme 13/08/08 772
    Uzaktaki MySql a bağlanma? 08/08/08 507
    PHP ve PEAR Kullanımı 03/08/08 445
    Içeriklerimizi Koruyalim? 01/08/08 513
    PHP ile vBulletin Tarzı Sayfalama yapma 31/07/08 644
    php ile profesyonel sayfalama yapma 31/07/08 830
    Tarih Dönüşüm Fonksiyonu 25/07/08 409
    Dosya Kontrolleri 25/07/08 401
    PHP Zip Dosya Sıkıştırma Sınıfı (Class) 16/07/08 423
    İki defa aynı nickle üye olunmasını engellemek 09/07/08 587
    kelimeleri bölmek 03/07/08 431
    preg_match kullanımı 01/07/08 608

    Misafir - 2008-08-05 14:52:56
    tşk


    electro71 - 2008-08-10 01:00:02
    tşk


    Misafir - 2008-08-07 19:42:32
    tşkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk

    Isminiz:
    E-mail adresiniz:
    Güvenlik Kodu:
      
     

     

    Görsel Dersler
  • Asp [59]

  • Asp.Net [5]

  • Csharp [33]

  • Delphi [85]

  • Delphi 7 [0]

  • Dreamweaver [45]

  • DW ile ASP Uygulamaları [28]

  • English Lessons [52]

  • Fireworks [4]

  • Flash [16]

  • HTML [20]

  • Java Script [0]

  • MS Access [19]

  • MS FrontPage [11]

  • Photoshop [32]

  • PHP [99]

  • Python [3]

  • SolidWorks [25]

  • Think Design [26]

  • VB Script [32]

  • Vb.Net [37]

  • Visual Basic [4]

  • iletisim    Reklam Verin Kadromuz Tavsiye Edin Site Haritasi Etiketler

    Sesli Chat beceri oyunlari

    Sitenizi Ekleyin.

    Sitemize Hosgeldiniz Sitemiz Genç Nesil Programlama Kaynak Sitesi Olup Siz Degerli Misafirlerimize Yararlanmaniz Amaci Ile Kurulmustur.



     

    Her hakki saklidir 2008 Tema : Pd - Ramazan
    Ferdi KÜÇÜK Web Stats webmaster forumu