Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

Fotoğrafı ile ara.

Konu, 'Proje Geliştirme' kısmında sedirAğacı tarafından paylaşıldı.

  1. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    Sitenin alan adını aldım.

    www.toyhan.net

    Fotoğrafı ile kişi arama, ankara, istanbul, izmir gibi şehirlerde bir kişiyi fotoğrafı ile arayıp bulabiliyorsun.

    Biliyorum google ın benzer uygulaması var. Onda var diye ben yazmayayımmı.? o_O
    Zaten benim projede fotoğraf ile arama işlemi sadece %20 gibi bir bölümü oluşturuyor ve amaç google ile çok farklı, diğer bölümler ise %80.

    Tabi sitenin bitmesine daha çok var, tahminim bu yıl sonu ancak.

    Alan adını erken almamın sebebi, gerçek site yükleninceye kadar, arama motorları benim alan adına alışsın diye.

    Tabi alan adının arkası boş dursa olmaz, gerçek projenin bi kaç sayfasını sadeleştirerek yükledim. Bi kaç tanede internetten bulduğum test fotoğrafları koydum.

    Projede openCV kullandığımdan, web servere attığımda bir sürü sorun ile karşılaştım. 3 günde ancak halledebildim.

    Normalde windows web serverde bi kaç yeri tıklasalar hallolacak bişeydi, tıklayacakları yerleride gösterdim.
    Ama olmaz dediler, sana özel bulut server kiralayıp kendin tıklamalısın dediler. Haklılar bişey diyemedim.

    Ama siteye özel bulut sunucu 12 kat daha pahalı olduğundan, şimdiden kiralamamın anlamı yoktu. Bulut sunucu yerine kendi sunucunu satın alıp işletsen daha ucuza geliyor ya.? Oda ayrı mesele. Başında sürekli ilgilenen biri olması lazım.

    Sonuçta openCV nin tıklamak gerektirmeyen eski sürümünü web servere yükledim.

    Artık arama motorlarının kapıyı çalmasını bekliyor site. Şekerle kapının önünde bekliyoruz.

    Asıl siteyi yıl sonuna kadar yetiştireceğimi umuyorum.
     
  2. dinlex

    dinlex Aktif Üye

    Kayıt:
    23 Aralık 2016
    Mesajlar:
    341
    Beğenilen Mesajlar:
    88
    Şehir:
    Hatay
    Peki neye göre buluyor ki bu? İbrahim tatlısesi bile bulamadıysa kimseyi bulamaz :D
     
  3. dinlex

    dinlex Aktif Üye

    Kayıt:
    23 Aralık 2016
    Mesajlar:
    341
    Beğenilen Mesajlar:
    88
    Şehir:
    Hatay
    İlk yüklediğim resimde bir sonuç çıkmadı. ikincisinde ibrahim tatlısesin resmini koyunca ilk yüklediğim resmi benzer resim olarak buldu ve ihtimal %22 dedi. İlk resim kadındı :))
     
  4. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    kemik ve kıkırdak yapısına göre buluyor. :p

    Valla neye göre bulduğunu bilmiyorum, kitabını aldım ama okumadım daha. Bulma işini yapan openCV paketi, intel firmasının.
    Yüzdeki göz, burun, ağız gibi organların büyüklükleri ve birbirlerine olan mesafelerine göre buluyor olabilir.

    Ayrıca orada yazdığım gibi sadece sitede bişeyler olsun diye koydum. Henüz gerçek arama yapmıyor. Üç beş test resmi koymuştum, onlar arasından ibrahim tatlısesi aramıştır, bulamayınca üzülmüştür.:confused: Yazık oldu üzdük amerikalıyı.
     
    dinlex bunu beğendi.
  5. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    HTML de select option lu bi kaç element var. Onları javascript ile kullanmak genelde zahmetli oluyor. kaçıncı seçenek işaretlenmiş, işaretlenen seçeneği al yada işaretle gibi işlemler lazım oluyor. Bugün çok seçenekli radio elementi lazım oldu.
    Burayada asayım, hap gibi yazanı internette kısa bi aramada bulamadım, mecbur ben yazdım.


    HTML:
    /*
        jfRadioID: radio list ID.
        jfI: radio listin hangi indexli seçeneğine true değeri atanacak.
        örnek: setTrueRadioListItem("konu", 2)  // konu id li radioButtonList de, 2 nolu indexi seçili yapar.
    */
    function setTrueRadioListItem(jfRadioID, jfI) {
        let jj = 0;
        const myInput = document.getElementsByTagName("input");
        if (myInput != null) {
            for (var ii = 0; ii < myInput.length; ii++) {
                if (myInput[ii].type === 'radio') {
                    if (myInput[ii].name.indexOf(jfRadioID) > -1 || myInput[ii].id.indexOf(jfRadioID) > -1) {
                        if (jfI == jj) { myInput[ii].checked = true; break; }   // ii: aktif input. jj: istenen inputun kaçıncı indexi
                        jj++;
                    }
                }
            }
        }
    }
    /*
        jfRadioID: radio list ID.
        radio listte seçili olan Item in index değerini döndürür.
        örnek: getTrueRadioListItem("konu");    // konu id li radioButtonList de, index no yu döndürür.
    */
    function getTrueItemRadioList(jfRadioID) {
        let jj = 0;
        const jfInput = document.getElementsByTagName("input");
        if (jfInput != null) {
            for (var ii = 0; ii < jfInput.length; ii++) {
                if (jfInput[ii].type === 'radio') {
                    if (jfInput[ii].name.indexOf(jfRadioID) > -1 || jfInput[ii].id.indexOf(jfRadioID) > -1) {
                        if (jfInput[ii].checked === true) { return jj; break; }
                        jj++;
                    }
                }
            }
        }
        return -1;  // bulunamadı.
    }
    
    Buda test sayfası.

    HTML:
    <!DOCTYPE html>
    <html>
    <head>
    
    </head>
    <body style="padding: 70px;">
    
      <input type="text" id="txSet" value="1"  />
    &nbsp; &nbsp;
      <input type="button" id="btSet" value="SET et" onclick="setTrueRadioList('gender')" />
    
    <br /><br />
    
    <input type="radio" id="gender1" name="gender" value="a"> AAA<br>
      <input type="radio" id="gender2" name="gender" value="b"> BBB<br>
      <input type="radio" id="gender3" name="gender" value="c"> CCC<br>
      <input type="radio" id="gender4" name="gender" value="d"> DDD
    
    <br /><br /><br />
    
    
    <br /><br />
    
      <input type="button" id="btGet" value="GET et" onclick="getTrueRadioList('gender')" />
         &nbsp; &nbsp;
        <span id="spnR" style="padding: 6px; width: 60px; border: 1px solid white;"></span>
    </body>
    </html>
    
    
    <script type="text/javascript">
    
    
    
    // jfRadioID: radio list ID.
    // jfI: radio listin hangi indexli seçeneğine ine true değeri atanacak.
    function setTrueRadioList(jfRadioID) {
        let jj = 0;
        const myInput = document.getElementsByTagName("input");
        const jfI = document.getElementById("txSet").value;
        if (myInput != null) {
            for (var ii = 0; ii < myInput.length; ii++) {
                if (myInput[ii].type === 'radio') {
                    if (myInput[ii].name.indexOf(jfRadioID) > -1 || myInput[ii].id.indexOf(jfRadioID) > -1) {
                        if (jfI == jj) { myInput[ii].checked = true; break; }   // ii: aktif input. jj: istenen inputun kaçıncı indexi
                        jj++;
                    }
                }
            }
        }
    }
    
    
    function getTrueRadioList(jfRadioID)
    {
    
        const mSpn = document.getElementById("spnR");
        mSpn.innerText = "";
        let jj = 0;
    //    console.log("mI: " + mI);
    
        const myInput = document.getElementsByTagName("input");
        if (myInput != null)
        {
            for (var ii = 0; ii < myInput.length; ii++)
            {
                if (myInput[ii].type === 'radio')
                {
                    if (myInput[ii].name.indexOf(jfRadioID) > -1 || myInput[ii].id.indexOf(jfRadioID) > -1)
                    {
                        if (myInput[ii].checked === true) { mSpn.innerText = jj; break; }
                        jj++;
                                    }
                }  
            }  
        }
    }
    </script>
    
     
    Son düzenleme: 23 Haziran 2018
  6. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    sitede resim yerine utf-8 karakterler kullanayım hız artar dedim.

    UTF-8 unicode karakterler çok fazla binlerce.
    Tek tek araştırmak yerine javascript kod yazdım. Tüm karakterleri kullanışlı bi şekilde listeliyor.

    Umarım işinize yarar.
    Bide .svg vektörel karakterler var ama uğraşmaya değermi bilmem. 2 tane kullandım.

    HTML:
    <!DOCTYPE html>
    <html>
    <head>
    <title>html utf-8 unicode özel karakter karşılıklarını gör</title>
    <meta charset="utf-8" />
    
    
    <style>
    body { font-family: sans-serif; font-size: 12px; color: #1b1b1b; }
    [id*='tdAdd'] {
        padding: 10px; width: 300px; vertical-align: top;
    }
    .padL40 { padding-left: 40px; }
    .pad4_ { padding: 4px; }
    .cPointer { cursor: pointer; }  /* hand */
    .borderBottomS1 { border-bottom: 1px solid silver; }
    .cSilver { color: silver; }
    .cGray { color: gray; }
    .font12 { font-size: 12px; }
    .font20 { font-size: 20px; }
    .font14 { font-size: 14px; }
    .backEf { background-color: #efefef; }
    .backWht { background-color: #fff; }
    
    .tblGridS { border-spacing: 2px; }
    .tblGridS caption { color: #fff;  padding: 6px; border-bottom: 1px solid gray;}
    .tblGridS th { border: 0px solid silver; font-weight: 500; padding: 4px; }
    .tblGridS td { border: 1px solid silver; padding: 5px; text-align: left; }
    
    </style>
    
    </head>
    <body class="padL40 backEf ">
    <p>
        text alana entity rakamı gir örneğin 8595 veya 8962 veya 129407 - sonra adet gir örn: 10 ve işlem tuşuna bas. ie, me, ch OK
    </p>
    bu rakam, rakam alanına aktarılır.
    <br />
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="">0</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="">255</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="arapça">1536</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="işaretler">5120</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="houseHomeEv - uzun işaretler - oklar - rakamlar - roma">8960</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="Trafik - doğa. - oklar - telex - kutular - pişti">9917</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="TL - süslü harfler - roma rakamları - oklar - çizgiler - işaretler ">8370</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="Çince">13056</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="">126975</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="zarlar - renkli-meyveler-doğa - arabalar - saat - evler - hayvanlar - smileys - chart">127000</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="evler">127900</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="">128400</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="">129407</span>
    <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx1').value = this.innerText;" title="insan yıldızlar oklar smile">128713</span>
    <span class="pad4_ cPointer cSilver" title="tıklama">(55.296 - 119.040 arası boş - 178.206 dan sonrası boş)</span>
    
    
    
    <div style="padding: 14px;">
        <div id="spnR" class="pad4_ cPointer" onclick="fTakeEl('tx1').value = this.innerText;" title="rakam  rakam alanına aktarılır."></div>
    
        <table class="tdLeft backWht tblGridS" style="width: 1200px;">
            <tr>
                <td colspan="5" style="padding: 10px; color: teal;">
                    rakam: <input id="tx1" type="number" class="txEntryWhite" value="8370" />
                    <span style=" margin-left: 40px;">
                        adet : <input id="tx2" type="number" class="txEntryWhite" value="100" style="width: 60px;"/>
                    </span>
                    <span style=" margin-left: 40px;">
                        <input type="button" value="&#10094; işlem" onclick="islemYap('sola')"/>
                    </span>
                    <span style=" margin-left: 40px;">
                        <input type="button" value="işlem &#10095;" onclick="islemYap('saga')"/>
                    </span>
                    <span style=" margin-left: 30px;">
                        <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx2').value = this.innerText;" title="bu rakam, adet alanına aktarılır.">100</span>
                        <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx2').value = this.innerText;" title="bu rakam, adet alanına aktarılır.">200</span>
                        <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx2').value = this.innerText;" title="bu rakam, adet alanına aktarılır.">400</span>
                        <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx2').value = this.innerText;" title="bu rakam, adet alanına aktarılır.">600</span>
                        <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx2').value = this.innerText;" title="bu rakam, adet alanına aktarılır.">1000</span>
                        <span class="pad4_ cPointer borderBottomS1" onclick="fTakeEl('tx2').value = this.innerText;" title="bu rakam, adet alanına aktarılır.">2000</span>
                    </span>
                </td>
            </tr>
            <tr>  
                <td id="tdAdd1"></td>
                <td id="tdAdd2"></td>
                <td id="tdAdd3"></td>
                <td id="tdAdd4"></td>
                <td id="tdAdd5"></td>
            </tr>
        </table>
    </div>
    
    </body>
    </html>
    
    
    
    <script>
    
    
        function islemYap(jDirection) {
            removeAllChilds("tdAdd1,tdAdd2,tdAdd3,tdAdd4,tdAdd5");
          
            let jTxNumber = fTakeEl("tx1");
            let jTxAdet = fTakeEl("tx2").value.trim();
    
            if (jDirection == "sola")  jTxNumber.value = jTxNumber.value - jTxAdet;
            const jYedek = fTakeEl("spnR");
            jYedek.innerText = jTxNumber.value.trim();
    
            if (jTxAdet == "") jTxAdet = 100;
            let jLine = 20;
            if (jTxAdet > 100) jLine = Math.floor(jTxAdet/5);            // aşağı yuvarla.
            if (jTxNumber != null && jTxNumber.value.trim() != "") {
                for (var ii = 0; ii < jTxAdet; ii++) {
                    var jElem = crtElemDyn("DIV", "dv" + ii.toString(), "260px", "", "font20 pad4_ borderBottomS1");
                    let jN = Number(jTxNumber.value.trim()) + ii;
                    if (jElem !== null && typeof (jElem) !== 'undefined') {
                        var jTdAdd;
                        jElem.innerHTML="<span class='pad4_ font12 cSilver'>"+(ii+1).toString()+"- &nbsp; </span>"+("&#"+jN.toString()+";")+"<span class='pad4_ font14' style='padding-left: 80px;'> "+("&amp;#"+jN.toString()+";").toString()+"</span>";      
                        if (ii < jLine) {
                            jTdAdd = fTakeEl("tdAdd1");
                        } else if (ii < jLine*2) {
                            jTdAdd = fTakeEl("tdAdd2");
                        } else if (ii < jLine*3) {
                            jTdAdd = fTakeEl("tdAdd3");
                        } else if (ii < jLine*4) {
                            jTdAdd = fTakeEl("tdAdd4");
                        } else {
                            jTdAdd = fTakeEl("tdAdd5");
                        }
                        jTdAdd.appendChild(jElem);
                    }
                }
    
                if (jDirection == "saga")  jTxNumber.value = Number(jTxNumber.value.trim()) + Number(jTxAdet);
    
            } else { alert("rakam alanına rakam girin."); }
        }
    
    /**
    * gelen ID ye ait elementin içindeki tüm child elementleri remove eder.
    * @param {any} jElemIDlist: birden fazla ID gelebilir. Virgülle ayrılmalı. "dv1,spnV,tblA"
    */
    function removeAllChilds(jElemIDlist) {
        var arrE = jElemIDlist.split(',');
        for (var ii = 0; ii < arrE.length; ii++) {
            var jList = fTakeEl(arrE[ii].trim());
            if (jList !== null) {
                while (jList.hasChildNodes()) {  
                    jList.removeChild(jList.firstChild);
                }
            }      
        }
    }
    
    function crtElemDyn(myTag, myID, myW, myH, myClassNameList) {
        if (fTakeEl(myID) === null) {
            var myElem__ = document.createElement(myTag);
            if (myID != "") myElem__.id = myID;
            if (myW != "") myElem__.style.width = myW;
            if (myH != "") myElem__.style.height = myH;
            if (myClassNameList != "") myElem__.className = myClassNameList;
            return myElem__;
        } else { alert("Hatalı tuş.");}
    }
    
    function fTakeEl(elemID) {
        if (typeof elemID === 'string' && elemID.trim() != "") return document.getElementById(elemID);
        return null;
    }
    
    </script>
    
     
    Son düzenleme: 10 Eylül 2018
  7. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    Lanet olsun javascriptinde içine etmeye başladılar. Ezber beyinlilere bişey ver içine etsinler.

    Nesne yönelimli programlama çok değerli dendi... hurraaaaa herkes OOP diye ağlamaya başladı. Dilleri öyle bi nesne tabanlı yaptılarki, 2x2=4 için bile 3 nesne tanımlayabilir hale geldin. Yeni mezunlar marifet sandılar gerekli gereksiz herşeyi nesne olarak kodladılar.

    OOP işi dinazora dönmeye başlayınca, ya dediler "javascript ne güzel dil öyle, Fonksiyonel programlama süper, hem hızlı, hem okunaklı, hem yeterince esnek daha ne isteyelim" dendi. OOP gitti, geldi javascript.

    Hurraaaaa her kes javascript kovalar oldu. Sora şimdi onunda içine ettiler bu ezber beyinliler.
    Hem ilave paketlerle ettiler. Hemde orjinal javascripti dinazora çevirmeye başladılar. Yeni sürümde yazılanı anlaman için artık çevirmenler lazım.
    Büyük marifetmiş gibi olabildiğince kısa kodlarla işi bitirmeye çalışıyorlar. Şifre çözücü olman lazım.
    Kendi yazdığını 1 sene değil 3 gün sonra anlayamazsın.

    Bunuda mok edecekler sonra başka dile hücum edecekler... Çok kısa yazmak marifet olsaydı C dilinde gelişim sonlanır başka dile ihtiyaç olmazdı. Ölçüsü olmalı, 3 tane ok işareti ile 10 tane iş yapılmaz. 10bin satırlık tek dosyada tüm dosyayı bu oklarla yaz, sonrada hatayı bul bakalım.

    Çok sinirliyim bildiğiniz gibi değil.

    Hacimli ve komplex Büyük projelerde çalışanlar ne dediğimi anlayacaklardır. yazmak kadar, başkasının yazdığı kodlara bakım yapmakta önemli. Kaç tane dev paketin dinazora döndüğü için çöpe atıldığını gördüm.

    İşler acil istenir, başkasının yazdığı standardı olmayan okunaksız kod bloğunu çözene kadar yama yaparsın. Yama yama yı kovalar. Sonra onlarca milyon dolarlık bütün paket dinazora döner, haydi çöpe.
     
    Son düzenleme: 21 Eylül 2018
  8. EMRESONMEZESK

    EMRESONMEZESK Üye

    Kayıt:
    1 Aralık 2016
    Mesajlar:
    124
    Beğenilen Mesajlar:
    13
    Şehir:
    ESKİŞEHİR
    fotoğrafları data olarak mı tarıyor formatı mı işliyor bende bu olayı merak ediyorum
     
  9. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    Fotoğrafları pixel olarak işliyor.
    Önce tüm resmi siyah beyaza çeviriyor.
    Sonra siyah nokta bilgilerini analiz ediyor.
    Tabi resmi bizim gibi görmüyor, her pixel koordinat ve renk kodu bilgisinin yer aldığı bir matrix yaratıyor. Sonra matrix üzerindeki bilgilerden hareket ediyor.

    Bildiğim kadarı ile, temelde böyle yapıyor. Daha detayı bilmiyorum.
     
    Son düzenleme: 1 Ekim 2018
  10. ismailcan10

    ismailcan10 Yeni Üye

    Kayıt:
    21 Eylül 2018
    Mesajlar:
    5
    Beğenilen Mesajlar:
    2
    Meslek:
    web uzmanı
    Şehir:
    Çanakkale
    Teşekkürler bilgilendirme için :)
     
    sedirAğacı bunu beğendi.
  11. sedirAğacı

    sedirAğacı Daimi Üye

    Kayıt:
    2 Mart 2016
    Mesajlar:
    903
    Beğenilen Mesajlar:
    237
    Meslek:
    Bilgisayar programcısı.
    Şehir:
    Aydın
    Bir metni küçük harfe çeviren ve her cümlenin ilk harfini büyük harf yapan fonksiyona ihtiyacım oldu. Baktım internette bulamadım.
    Kelimeleri çeviren var ama cümleyi çeviren yok. Yazmak zorunda kaldım. Türkçe desteğide var. Aslında artık pek türkçe sorunu çıkmıyor, ama benim eskiden yazdığım hazır fonksiyonlarda kullanmışım.
    Asayım, birilerine lazım olur.


    HTML:
    <!DOCTYPE html>
    <html>
    <body style="padding: 70px;"
    <p>Metni, küçük-BÜYÜK harfe çevir.</p>
    
    
    <table>
    <tr>
        <td style="width: 500px;">
            <textarea id="txa1" class="tx" rows="4" cols="100">  XFGbcABC012. DEFWQrt. 75zuzu</textarea>
        </td>
        <td style="width: 200px;">
            <input type="button" value="küçük yap" onclick="_doP('k')"/>
        </td>
        <td style="width: 200px;">
            <input type="button" value="BÜYÜK YAP" onclick="_doP('b')"/>
        </td>
    </tr>
    <tr>
        <td colspan="2">
            <input type="checkbox" id="chbx1" checked="true"> Noktadan sonraki ilk harfler büyük olsun.(sadece metin küçüğe çevrileceğnde geçerli.)
        </td>
    </tr>
    <tr><td colspan="2">&nbsp;</td></tr>
    <tr>
        <td colspan="2" style="color: teal;">
            Sonuç :    <span id="spnR"></span>
        </td>
    </tr>
    </table>
    
    
    <br />
    
    
    </body>
    </html>
    
    
    <script type="text/javascript">
    
    
    function _doP(jD) {
        const jStr = document.getElementById("txa1").value;
        var jR = document.getElementById("spnR");
        jR.innerText = "";
    
        jR.innerText = convertVal(jStr, jD);
    }
    
    // gelen metni, küçük yada büyük harfe çevir.
    function convertVal(jStr, jType) {
        let jN = "";
        if (jStr.length > 0) {
            if (jType === "k") {
            if (document.getElementById("chbx1").checked) {
                jN = cvtFirstChr(jStr.toLowerCase());
            } else {
                jN = ConvertTRbigTOsmall(jStr.toLowerCase());
            }
            } else {
                    jN = ConvertTRsmallTObig(jStr.toUpperCase());    // büyük harfe çevir.
            }
        }
        return jN;
    }
    
    //TR chr leri küçük TR chr lere çevir. tolower() Normal çeviride İ ler sorun çıkarabiliyor.
    function ConvertTRbigTOsmall(jStr) {
        let jR = "";
        if (jStr.trim() !== "") jR = jStr.replace(/İ/g, "i").replace(/I/g, "ı").replace(/Ğ/g, "ğ").replace(/Ü/g, "ü").replace(/Ş/g, "ş").replace(/Ö/g, "ö").replace(/Ç/g, "ç").replace(/Â/g, "â").trim();
        return jR;
    }
    function ConvertTRsmallTObig(jStr) {
        let jR = "";
        if (jStr.trim() !== "") jR = jStr.replace(/i/g, "İ").replace(/ı/g, "I").replace(/ğ/g, "Ğ").replace(/ü/g, "Ü").replace(/ş/g, "Ş").replace(/ö/g, "Ö").replace(/ç/g, "Ç").replace(/â/g, "Â").trim();
        return jR;
    }
    // gelen metindeki her cümlede, ilk harfi büyük harfe çevir.
    function cvtFirstChr(jVal) {
        let jR = "";
        let jFirstChrPrcs = false;
        let jLetter = false;
        let jChr = "";
    
        var jPattern = /[a-zA-Z|Ğ|Ü|Ş|İ|Ö|Ç|Â|ğ|ü|ş|ı|ö|ç|â]/igu;
        for (ii = 0; ii < jVal.length; ii++)
        {
            jChr = jVal.substr(ii, 1);
            jLetter = jPattern.test(jChr);
    
            if (!jFirstChrPrcs && jLetter) {
                jR += ConvertTRsmallTObig(jChr).toUpperCase();
                jFirstChrPrcs = true;
            } else {
                if (jChr === ".") jFirstChrPrcs = false;
                jR += jChr;
            }
        }
        return jR;
    }
    
    </script>
     
    Son düzenleme: 5 Ekim 2018
  12. ismailcan10

    ismailcan10 Yeni Üye

    Kayıt:
    21 Eylül 2018
    Mesajlar:
    5
    Beğenilen Mesajlar:
    2
    Meslek:
    web uzmanı
    Şehir:
    Çanakkale
    Valla teşekkürler arkadaşlar sağolın :):):)
     
  13. CryptoTurtle

    CryptoTurtle Yeni Üye

    Kayıt:
    6 Ekim 2018
    Mesajlar:
    6
    Beğenilen Mesajlar:
    0
    Şehir:
    İstanbul
    Burası geliştikçe çok yararlı şeyler için kullanılabilir. Henüz başarı oranı çok düşük ama gün geçtikçe geliştirilebilir.