• 24-01-2019, 12:45:19
    #1
    Merhaba Beyler,

    Bir koda ihtiyacım var ancak bulamadım, İstediğim şey tam olarak şu :

    Örneğin domain.com/images/ dizininde binlerce resim var. Ben toplu olarak bu dizindeki resimlerin hepsini yeniden boyutlandırmak ve kalitesini optimize etmek istiyorum.

    Yapılacak işlem En ve boy oranını koruyarak %50 oranında küçültecek ve kalitesini %20 oranında düşürüp aynı isimde domain.com/images/min/ dizinine kayıt edecek.

    Böyle bir script yada kod varmı bildiğiniz ?
  • 24-01-2019, 12:56:22
    #2
    php den ziyade Gulp ile çok daha hızlı ve çok daha güzel bir sonuç elde edebiliyorsunuz.

    Ek olarak php ile yapmak istersen;

    http://image.intervention.io/
  • 24-01-2019, 12:57:41
    #3
    picpoket adlı üyeden alıntı: mesajı görüntüle
    php den ziyade Gulp ile çok daha hızlı ve çok daha güzel bir sonuç elde edebiliyorsunuz.
    Bu konuda beni bilgilendirmisiniz, Pek bilgim yok "Gulp"'dan
  • 24-01-2019, 13:45:39
    #4
    mersinstyle adlı üyeden alıntı: mesajı görüntüle
    Bu konuda beni bilgilendirmisiniz, Pek bilgim yok "Gulp"'dan
    Yazamadan önce şunu sorayım, bunu bir script içeriside modül olarak mı kullanmak istiyorsunuz ?
  • 24-01-2019, 14:24:51
    #5
    @picpoket; Bence direkt standalone bir script olarak çalıştıracak, istediği işi yapacak ve bitecek.

    Gulp'da kullanabilirsiniz, Grunt'da. Ayrıca eğer mutlaka PHP olması gerekiyorsa ve özellikle image sayısı çok Imagick (ImageMagick) tavsiye ederim. GD'den 10 kat kadar daha hızlı çalışır.
    Arama kelimeniz "image batch processing php"

    Kolay gelsin.
  • 24-01-2019, 14:31:23
    #6
    <?php
    
    ini_set('max_execution_time', 0);
    
    $klasor = '/home/un4saken/public_html/images/';
    $yeniklasor = '/home/un4saken/public_html/images/yeniklasor/';
    $genislik = 500;
    $yukseklik = 500;
    $kalite = 80;
    
    
    if($dir = opendir($klasor)){
        while(($file = readdir($dir))!== false){
    
            $imagePath = $klasor.$file;
            $destPath = $yeniklasor.$file;
            $checkValidImage = @getimagesize($imagePath);
    
            if(file_exists($imagePath) && $checkValidImage)
            {
         
                if(resizeImage($imagePath,$destPath,$genislik,$yukseklik,$kalite))
                {
                    echo $file.' basarili!<br />';
                    /*
                    Now Image is resized, may be save information in database?
                    */
    
                }else{
                    echo $file.' biseyler yanlis gitti!<br />';
                }
            }
        }
        closedir($dir);
    }
    
    
    function resizeImage($SrcImage,$DestImage, $MaxWidth,$MaxHeight,$kalite)
    {
           list($iWidth,$iHeight,$type)    = getimagesize($SrcImage);
        $ImageScale = min($MaxWidth/$iWidth, $MaxHeight/$iHeight);
        $NewWidth  = ceil($ImageScale*$iWidth);
        $NewHeight = ceil($ImageScale*$iHeight);
        $NewCanves = imagecreatetruecolor($NewWidth, $NewHeight);
    
        switch(strtolower(image_type_to_mime_type($type)))
        {
            case 'image/jpeg':
                $NewImage = imagecreatefromjpeg($SrcImage);
                break;
            case 'image/png':
                $NewImage = imagecreatefrompng($SrcImage);
                break;
            case 'image/gif':
                $NewImage = imagecreatefromgif($SrcImage);
                break;
            default:
                return false;
        }
    
       
        if(imagecopyresampled($NewCanves, $NewImage,0, 0, 0, 0, $NewWidth, $NewHeight, $iWidth, $iHeight))
        {
           
            if(imagejpeg($NewCanves,$DestImage,$kalite))
            {
                imagedestroy($NewCanves);
                return true;
            }
        }
    }
  • 24-01-2019, 14:54:58
    #7
    @un4saken;

    İşime yaradı teşekkürler r10+