• 04-03-2014, 20:25:18
    #19
    Hızlıca yaptığım için şu an jpg için çalışıyor 1 2 kod eklenip png ve gif için de çalışır duruma gelebilir.
    Kullanımı basit fonksiyon içine müdehale etmeden çekilecek url, kaydedilecek klasör ve watermark grafiğini kullanabilirsin.
    Resimlerin çekileceği klasöre chmod 777 uygulamak gerekebilir. (sunucu izinleri ile alakali.)
    kendine ufak bir watermak png oluşturup kullanmaya başlayabilirsin.
    <?php 
    function resimcekWaterMark($url, $dizin, $watermark, $yenisim = false) {
        $path_parts = pathinfo($url);
        if (!empty($yenisim)) {
            $resimLoc =  $dizin."/".$yenisim;   
        }
        else {
            $resimLoc = $dizin."/".time().substr(md5(rand()),0,10).".".$path_parts['extension'];     
        }
        /** resim'i ftp'e kaydediyoruz **/
        $chi = curl_init($url); //dosyayı burada alıyoruz kendi serverımıza 
        $fpi = fopen($resimLoc, "w"); //geçici klasöre dosyayı yazdırıyoruz 
        curl_setopt($chi, CURLOPT_FILE, $fpi);  
        curl_setopt($chi, CURLOPT_HEADER, 0); 
        curl_setopt($chi, CURLOPT_REFERER, "http://www.google.com/bot.html");
        curl_setopt($chi, CURLOPT_CONNECTTIMEOUT, 40);
        curl_setopt($chi, CURLOPT_TIMEOUT, 40);	
        curl_exec($chi); 
        curl_close($chi); 
        fclose($fpi);
        /** watermark işlemleri **/
        $img=imagecreatefromjpeg($resimLoc);
        $img_width=imagesx($img);
        $img_height=imagesy($img);
        
        $watermark=imagecreatefrompng($watermark);  
        $watermark_width=imagesx($watermark);  
        $watermark_height=imagesy($watermark);  
        
        $image=imagecreatetruecolor($watermark_width, $watermark_height);  
        imagealphablending($image, false);
        
        $dest_x=$img_width-$watermark_width-5;
        $dest_y=$img_height-$watermark_height-5;
        
        imagecopy($img, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
        imagesavealpha($img, true);
        if (imagejpeg($img, $resimLoc, 90)) {
            return true;
        }
        else {
            return false;
        }
    }  
    //kullanımı 
    if (resimcekWaterMark("http://www.ajansspor.com/resimv3/lebron_040314.jpg", "resimler", "watermark.png", "yeniresimadi.jpg")) { //resimurl, klasör, watermark, kaydedilecek isim
        echo "tamamdir";
    }
    else {
        echo "yapilamadi";
    }
    ?>
    buddy adlı üyeden alıntı: mesajı görüntüle
    bot üzerinde deneye deneye karıştı iyice baştan yazmam gerek.

    benim için bir tane url resim için uyarlayabilirseniz çok sevinirim. yukarda da verdiğim resim urlsini vereyim.

    http://www.ajansspor.com/resimv3/lebron_040314.jpg


    yani bu resimi hostumda istediğim klasöre çekeyim ve üzerine watermark yerleştieyim. yani uygun olursa senin için de, vakit alıyorsa ücret de ödeyebilirim. çok fazla deneyecek vaktim yok.
  • 04-03-2014, 22:36:18
    #20
    abi tşk ederim. işe yaradı yalnız bir sorun var. resimleri çektiğim yerde resim isimlerinde boşluk var. boşluk olduğu halde html img src yapınca geliyor ama bu kodun içinde çalışmıyor. bunun çözümü var mı? tkr tşk ederim.

    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    Hızlıca yaptığım için şu an jpg için çalışıyor 1 2 kod eklenip png ve gif için de çalışır duruma gelebilir.
    Kullanımı basit fonksiyon içine müdehale etmeden çekilecek url, kaydedilecek klasör ve watermark grafiğini kullanabilirsin.
    Resimlerin çekileceği klasöre chmod 777 uygulamak gerekebilir. (sunucu izinleri ile alakali.)
    kendine ufak bir watermak png oluşturup kullanmaya başlayabilirsin.
    <?php 
    function resimcekWaterMark($url, $dizin, $watermark, $yenisim = false) {
        $path_parts = pathinfo($url);
        if (!empty($yenisim)) {
            $resimLoc =  $dizin."/".$yenisim;   
        }
        else {
            $resimLoc = $dizin."/".time().substr(md5(rand()),0,10).".".$path_parts['extension'];     
        }
        /** resim'i ftp'e kaydediyoruz **/
        $chi = curl_init($url); //dosyayı burada alıyoruz kendi serverımıza 
        $fpi = fopen($resimLoc, "w"); //geçici klasöre dosyayı yazdırıyoruz 
        curl_setopt($chi, CURLOPT_FILE, $fpi);  
        curl_setopt($chi, CURLOPT_HEADER, 0); 
        curl_setopt($chi, CURLOPT_REFERER, "http://www.google.com/bot.html");
        curl_setopt($chi, CURLOPT_CONNECTTIMEOUT, 40);
        curl_setopt($chi, CURLOPT_TIMEOUT, 40);    
        curl_exec($chi); 
        curl_close($chi); 
        fclose($fpi);
        /** watermark işlemleri **/
        $img=imagecreatefromjpeg($resimLoc);
        $img_width=imagesx($img);
        $img_height=imagesy($img);
        
        $watermark=imagecreatefrompng($watermark);  
        $watermark_width=imagesx($watermark);  
        $watermark_height=imagesy($watermark);  
        
        $image=imagecreatetruecolor($watermark_width, $watermark_height);  
        imagealphablending($image, false);
        
        $dest_x=$img_width-$watermark_width-5;
        $dest_y=$img_height-$watermark_height-5;
        
        imagecopy($img, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
        imagesavealpha($img, true);
        if (imagejpeg($img, $resimLoc, 90)) {
            return true;
        }
        else {
            return false;
        }
    }  
    //kullanımı 
    if (resimcekWaterMark("http://www.ajansspor.com/resimv3/lebron_040314.jpg", "resimler", "watermark.png", "yeniresimadi.jpg")) { //resimurl, klasör, watermark, kaydedilecek isim
        echo "tamamdir";
    }
    else {
        echo "yapilamadi";
    }
    ?>
  • 05-03-2014, 00:31:21
    #21
    buddy adlı üyeden alıntı: mesajı görüntüle
    abi tşk ederim. işe yaradı yalnız bir sorun var. resimleri çektiğim yerde resim isimlerinde boşluk var. boşluk olduğu halde html img src yapınca geliyor ama bu kodun içinde çalışmıyor. bunun çözümü var mı? tkr tşk ederim.
    verdiğim kodda

    $path_parts = pathinfo($url);

    şunun hemen üstüne

    $url = str_replace(" ","%20",$url);

    ekleyip dener misin.
  • 05-03-2014, 12:41:10
    #22
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    verdiğim kodda

    $path_parts = pathinfo($url);

    şunun hemen üstüne

    $url = str_replace(" ","%20",$url);

    ekleyip dener misin.

    for döngüsü içinde bota dahil ettim her resim için otomatik adlandırma ve watermark eklemesi yapıyor.
  • 05-03-2014, 15:42:40
    #23
    buddy adlı üyeden alıntı: mesajı görüntüle
    for döngüsü içinde bota dahil ettim her resim için otomatik adlandırma ve watermark eklemesi yapıyor.
    yapmak istediğin bu degil mi zaten her resme watermark eklemek?
    otomatik isim vermesini istemiyorsan isimleri kendin belirleyebilirsin.
    resimcekWaterMark("http://www.ajansspor.com/resimv3/lebron_040314.jpg", "resimler", "watermark.png", "yeniresimadi.jpg") //resimurl, klasör, watermark, kaydedilecek isim
  • 05-03-2014, 15:47:47
    #24
    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    yapmak istediğin bu degil mi zaten her resme watermark eklemek?
    otomatik isim vermesini istemiyorsan isimleri kendin belirleyebilirsin.
    resimcekWaterMark("http://www.ajansspor.com/resimv3/lebron_040314.jpg", "resimler", "watermark.png", "yeniresimadi.jpg") //resimurl, klasör, watermark, kaydedilecek isim
    evet yani verdiğin koda yeni eklemeler yaptım. otomatik olarak adlandırma yapıyor. fakat aynı resimadini for içinde artan a değişkeni ile oluyor. fakat yeni bir b degiskeni yaparak aynı for dögnüsü içinde farklı otomatik isimlendirme yapamadım.


    incelemek istersen. ayrıntıları anlatıyorum.

    <?php
     
     
    /*
    burada iki fonskyionum var.
    1- resimcekWaterMark adında fonksiyon.
    2- Bot ile div içindeki karmaşık ve gereksiz yerleri silerek sadece resim urlsini çekiyor..
    */
      
    //şimdi bir for döngüsü yapmam gerekiyor. bunun için 
    //resim urllerini kactan kaca oldugunu belirtiyorum. 
    $urlkactan        ="19000";
    $urlkaca        ="19005";
     
    //resim adlandirmasinin nasıl ne sekilde degisecegini belirtiyorum.
    $resimadi ="araba_resimi";
    $resimkactan ="1"
    $resimkaca ="5";
     
    //amac her bir resimin adlandırmasını
    // araba_resimi1, araba_resimi2 olarak 5 e kadar arttırak farklı isimler elde etmek.
     
     
    for($b=$resimkactan; $b<=$resimkaca; $a++) 
    //yukardakini  de bir alttaki döngüye dahil etmem gerekiyor. ki aynı for  içinde  senkronize çalışsınlar.  en altta "$b.jpg" olarak kaydetmeliyim.
     
    //simdi resim urllerini 19000 den 19005 ci resime kadar cekip ekrana yazdiriyorum. 
    for($a=$urlkactan; $a<=$urlkaca; $a++) {
    $link    ="http://www.birsiteadi.com/index.php?r3=$a";
    $parcala2    ='@<div class="Image">(.*?)"></div>@si';
    $parcala4  ='@<img src="(.*?)" border="0"@si';
     
      
    $botara        =file_get_contents($link);
      
    preg_match_all($parcala, $botara, $baslik);
    preg_match_all($parcala2, $botara, $resim);
    preg_match_all($parcala3, $botara, $ozet);
      
      
    $botresim = duzenle($resim[1][0]);
     
      
    preg_match_all($parcala4, $botresim, $yeniresim);
    $temizresim = $yeniresim[1][0];
      
      
    $resimgoster = '<img src="http://www.birsiteadi.com/'.$temizresim. '"/>'." ";
    $resimurl = 'http://www.birsiteadi.com/'.$temizresim;
      
    echo $resimurl;
    echo "<br>";
    echo $resimgoster;
      
      
    //cekilen resim urllerine watermark yerlestirme
    if (resimcekWaterMark($resimurl, "resimlerim", "watermark.png", "$b.jpg")) { //resimurl, klasör, watermark, kaydedilecek isim
        echo "tamamdir";
    }
    else {
        echo "yapilamadi";
    }
      
      
    }
     
    ?>
  • 05-03-2014, 16:03:13
    #25
    kodlarin biraz karışık geldi bana. o yüzden for'lara müdehale etmicem.

    sana verdiğim fonksiyonda
    return true;
    olan yeri

    return $resimLoc;
    olarak değiştir. fonksiyonda dönen cevap resimklasörü ve resim ismi olacak.

    kullanimi da bir değişkene aliyoruz ve kendi verdiğimiz ismi siliyoruz ($b.jpg'i) fonksiyon kendi otomatik isim atayacak.

    $resimWM = resimcekWaterMark($resimurl, "resimlerim", "watermark.png"); //$resimWM değişkenine, yeniden adlandırılmış resmin adi gelir(resimlerim/18312342334hjhdsj23.jpg şeklinde). db kaydetmek için vs. kullanabilirsin.
    /**
    echo $resimWM; dediğin resimlerim/18312342334hjhdsj23.jpg çıktı verir.
    
    **/
    buddy adlı üyeden alıntı: mesajı görüntüle
    evet yani verdiğin koda yeni eklemeler yaptım. otomatik olarak adlandırma yapıyor. fakat aynı resimadini for içinde artan a değişkeni ile oluyor. fakat yeni bir b degiskeni yaparak aynı for dögnüsü içinde farklı otomatik isimlendirme yapamadım.


    incelemek istersen. ayrıntıları anlatıyorum.

    <?php
     
     
    /*
    burada iki fonskyionum var.
    1- resimcekWaterMark adında fonksiyon.
    2- Bot ile div içindeki karmaşık ve gereksiz yerleri silerek sadece resim urlsini çekiyor..
    */
      
    //şimdi bir for döngüsü yapmam gerekiyor. bunun için 
    //resim urllerini kactan kaca oldugunu belirtiyorum. 
    $urlkactan        ="19000";
    $urlkaca        ="19005";
     
    //resim adlandirmasinin nasıl ne sekilde degisecegini belirtiyorum.
    $resimadi ="araba_resimi";
    $resimkactan ="1"
    $resimkaca ="5";
     
    //amac her bir resimin adlandırmasını
    // araba_resimi1, araba_resimi2 olarak 5 e kadar arttırak farklı isimler elde etmek.
     
     
    for($b=$resimkactan; $b<=$resimkaca; $a++) 
    //yukardakini  de bir alttaki döngüye dahil etmem gerekiyor. ki aynı for  içinde  senkronize çalışsınlar.  en altta "$b.jpg" olarak kaydetmeliyim.
     
    //simdi resim urllerini 19000 den 19005 ci resime kadar cekip ekrana yazdiriyorum. 
    for($a=$urlkactan; $a<=$urlkaca; $a++) {
    $link    ="http://www.birsiteadi.com/index.php?r3=$a";
    $parcala2    ='@<div class="Image">(.*?)"></div>@si';
    $parcala4  ='@<img src="(.*?)" border="0"@si';
     
      
    $botara        =file_get_contents($link);
      
    preg_match_all($parcala, $botara, $baslik);
    preg_match_all($parcala2, $botara, $resim);
    preg_match_all($parcala3, $botara, $ozet);
      
      
    $botresim = duzenle($resim[1][0]);
     
      
    preg_match_all($parcala4, $botresim, $yeniresim);
    $temizresim = $yeniresim[1][0];
      
      
    $resimgoster = '<img src="http://www.birsiteadi.com/'.$temizresim. '"/>'." ";
    $resimurl = 'http://www.birsiteadi.com/'.$temizresim;
      
    echo $resimurl;
    echo "<br>";
    echo $resimgoster;
      
      
    //cekilen resim urllerine watermark yerlestirme
    if (resimcekWaterMark($resimurl, "resimlerim", "watermark.png", "$b.jpg")) { //resimurl, klasör, watermark, kaydedilecek isim
        echo "tamamdir";
    }
    else {
        echo "yapilamadi";
    }
      
      
    }
     
    ?>
  • 05-03-2014, 16:59:41
    #26
    evet abi şuan çalışıyor. fakat return resimloc yapınca sanırım for döngüsünü iki kez çalıştırp her resimden iki defa oluşturuyor.

    bir de bu rastgele resim adlarını belirli bir kalıp şeklinde üretebilrmiyiz.
    mesela atıyorum araba_resimleri_35465465.jpg şeklinde...

    LaCReMeL adlı üyeden alıntı: mesajı görüntüle
    kodlarin biraz karışık geldi bana. o yüzden for'lara müdehale etmicem.

    sana verdiğim fonksiyonda
    return true;
    olan yeri

    return $resimLoc;
    olarak değiştir. fonksiyonda dönen cevap resimklasörü ve resim ismi olacak.

    kullanimi da bir değişkene aliyoruz ve kendi verdiğimiz ismi siliyoruz ($b.jpg'i) fonksiyon kendi otomatik isim atayacak.

    $resimWM = resimcekWaterMark($resimurl, "resimlerim", "watermark.png"); //$resimWM değişkenine, yeniden adlandırılmış resmin adi gelir(resimlerim/18312342334hjhdsj23.jpg şeklinde). db kaydetmek için vs. kullanabilirsin.
    /**
    echo $resimWM; dediğin resimlerim/18312342334hjhdsj23.jpg çıktı verir.
    
    **/
  • 05-03-2014, 17:15:32
    #27
    buddy adlı üyeden alıntı: mesajı görüntüle
    evet abi şuan çalışıyor. fakat return resimloc yapınca sanırım for döngüsünü iki kez çalıştırp her resimden iki defa oluşturuyor.

    bir de bu rastgele resim adlarını belirli bir kalıp şeklinde üretebilrmiyiz.
    mesela atıyorum araba_resimleri_35465465.jpg şeklinde...
    fonksiyonun içindeki
    $resimLoc = $dizin."/".time().substr(md5(rand()),0,10).".".$path_parts['extension'];
    şu kodu

    $resimLoc = $dizin."/araba_resimleri_".time().substr(md5(rand()),0,10).".".$path_parts['extension'];
    şeklinde değiştirirsen dediğin olur.

    2 defa resim oluşturma olayı for döngülerinde bir sorun vardır.