• 27-07-2023, 23:25:31
    #1
    Merhaba;
    Verot kütüphanesi kullanıyorum. Ayrıca webpConvert ile'de yüklenen görselin webp olmasını sağlamak istiyorum.
    Aşağıdaki koda
    $this->webpConvert2($yol);
    veya
    $image->webpConvert2($yol);
    ekliyorum fakat bu seferde hiç kayıt etmiyor. Nasıl yapabilirim?
    public function webpConvert2($file, $compression_quality = 80)
    {
        // check if file exists
        if (!file_exists($file)) {
            return false;
        }
        $file_type = exif_imagetype($file);
        //https://www.php.net/manual/en/function.exif-imagetype.php
        //exif_imagetype($file);
        // 1    IMAGETYPE_GIF
        // 2    IMAGETYPE_JPEG
        // 3    IMAGETYPE_PNG
        // 6    IMAGETYPE_BMP
        // 15   IMAGETYPE_WBMP
        // 16   IMAGETYPE_XBM
        $output_file =  $file . '.webp';
        if (file_exists($output_file)) {
            return $output_file;
        }
        
        if (function_exists('imagewebp')) {
            switch ($file_type) {
                case '1': //IMAGETYPE_GIF
                $image = imagecreatefromgif($file);
                break;
                case '2': //IMAGETYPE_JPEG
                $image = imagecreatefromjpeg($file);
                break;
                case '3': //IMAGETYPE_PNG
                $image = imagecreatefrompng($file);
                imagepalettetotruecolor($image);
                imagealphablending($image, true);
                imagesavealpha($image, true);
                break;
                case '6': // IMAGETYPE_BMP
                $image = imagecreatefrombmp($file);
                break;
                case '15': //IMAGETYPE_Webp
                return false;
                break;
                case '16': //IMAGETYPE_XBM
                $image = imagecreatefromxbm($file);
                break;
                default:
                return false;
            }
            // Save the image
            $result = imagewebp($image, $output_file, $compression_quality);
            if (false === $result) {
                return false;
            }
            // Free up memory
            imagedestroy($image);
            return $output_file;
            } elseif (class_exists('Imagick')) {
            $image = new Imagick();
            $image->readImage($file);
            if ($file_type === "3") {
                $image->setImageFormat('webp');
                $image->setImageCompressionQuality($compression_quality);
                $image->setOption('webp:lossless', 'true');
            }
            $image->writeImage($output_file);
            return $output_file;
        }
        return false;
    }  
    
    
    public function resim_yukle($thumb = false,$name,$dadi,$yol,$x = false,$y = false,$filtre = true){
    if($filtre == false){ // filtre yok ise
    if($thumb == true){
    @move_uploaded_file($_FILES[$name]["tmp_name"],$yol.'/thumb/'.$dadi);
    }else{
    @move_uploaded_file($_FILES[$name]["tmp_name"],$yol.'/'.$dadi);
    }
    return $dadi;
    }else{ // eğer filtre true ise
    if(is_array($name)){
    $ho     = $name;
    }else{
    $ho     = $_FILES[$name];
    }
    $image = new Upload($ho);
    if ($image->uploaded) { // Resim seçilmiş ise
    $resim                      = $dadi;
    $uzanti                     = $this->uzanti($dadi);
    // Yeniden adlandıralım.
    $image->file_new_name_body = str_replace($uzanti,"",$resim);
    if($x == true OR $y == true){
    $image->image_resize = true;
    if($x != false AND $y != false){
    $image->image_x = $x;
    $image->image_y = $y;
    }elseif($x != false AND $y == false){
    $image->image_x = $x;
    $image->image_ratio_y = true;
    }elseif($y != false AND $x == false){
    $image->image_y = $y;
    $image->image_ratio_x = true;
    }
    } // resize  işlevi gerçekleşiyorsa
    // resmi uzantinin formatına convert edelim
    $image->image_convert = str_replace(".","",$uzanti);
    // sadece resim formatları yüklensin
    $image->allowed = array ( 'image/*' );
    // Kayıt edilecek  klasör
    $yol    = ($thumb == true) ? $yol.'/thumb/' : $yol.'/';
    
    
    $image->Process($yol);
    
    
    if (! $image->processed){ // yükleme hatalıysa...
    return false;
    } // yükleme hatalıysa...
    return $dadi;
    } // Seçilmiş ise
    } // filtre var ise
    }
  • 28-07-2023, 00:43:06
    #2
    webpconvert2 doğru problem göremedim.
    sadece webp nin exif i 18 fakat onunda bir etkisi yok.
    gd veya imagick yüklü olduğundan emin misiniz.