v2.5.2
Giriş yap

Görsel Upload Ederken Piksel Bozulması Hatası

ilkertuncer
527 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhabalar.

Ben resmimi 271 x 150 ebatında küçülteceğim.

Resmin el ile manuel olarak yüksekliği ve genişiliği girilerek 271 x 150 şeklinde küçültülmüş hali: https://prnt.sc/a9zWwnzBToGR

Sizin yazdığınız sistem ile 271 x 150 şeklinde küçültülmüş hali: https://prnt.sc/naT6BwWtmXpP

Umarım resmin renk bozukluğunu iyi bir şekilde açıklayabilmişimdir. Bu sorun nasıl çözülebilir?

Kodum:

<?php  
    error_reporting(E_ALL);
    
    $host = 'localhost';
    $db   = 'lpanel';
    $user = 'root';
    $pass = '';
    $charset = 'utf8mb4';
    $options = [
        \PDO::ATTR_ERRMODE            => \PDO::ERRMODE_EXCEPTION,
        \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
        \PDO::ATTR_EMULATE_PREPARES   => false,
    ];
    $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
    try {
         $pdo = new \PDO($dsn, $user, $pass, $options);
    } catch (\PDOException $e) {
         throw new \PDOException($e->getMessage(), (int)$e->getCode());
    } 
    function compress_image($source_url, $destination_url, $quality) 
    {
    
        $info = getimagesize($source_url);
    
            if ($info['mime'] == 'image/jpeg')
                  $image = imagecreatefromjpeg($source_url);
    
            elseif ($info['mime'] == 'image/gif')
                  $image = imagecreatefromgif($source_url);
    
          elseif ($info['mime'] == 'image/png')
                  $image = imagecreatefrompng($source_url);
    
            imagejpeg($image, $destination_url, $quality);
        return $destination_url;
    }
    
    //Create Thumb Image
    function create_thumb_image($target_folder ='',$thumb_folder = '', $thumb_width = '',$thumb_height = '')
     {  
         //folder path setup
             $target_path = $target_folder;
             $thumb_path = $thumb_folder;  
              
    
             $thumbnail = $thumb_path;
             $upload_image = $target_path;
    
                list($width,$height) = getimagesize($upload_image);
                $thumb_create = imagecreatetruecolor($thumb_width,$thumb_height);
                switch($file_ext){
                    case 'jpg':
                        $source = imagecreatefromjpeg($upload_image);
                        break;
                    case 'jpeg':
                        $source = imagecreatefromjpeg($upload_image);
                        break;
                    case 'png':
                        $source = imagecreatefrompng($upload_image);
                        break;
                    case 'gif':
                        $source = imagecreatefromgif($upload_image);
                         break;
                    default:
                        $source = imagecreatefromjpeg($upload_image);
                }
           imagecopyresized($thumb_create, $source, 0, 0, 0, 0, $thumb_width, $thumb_height, $width,$height);
                switch($file_ext){
                    case 'jpg' || 'jpeg':
                        imagejpeg($thumb_create,$thumbnail,100);
                        break;
                    case 'png':
                        imagepng($thumb_create,$thumbnail,100);
                        break;
                    case 'gif':
                        imagegif($thumb_create,$thumbnail,100);
                         break;
                    default:
                        imagejpeg($thumb_create,$thumbnail,100);
                }
       }
    ?>
    <?php
    if(isset($_POST['submit'])){
    	$file_name= str_replace(" ","-",$_FILES['resim']['name']);
    	$resim=rand(0,99999)."_".$file_name;
    	$tpath1='images/'.$resim;        
    	$pic1=compress_image($_FILES["resim"]["tmp_name"], $tpath1, 90);
    
    	$thumbpath='thumbs/'.$resim;   
    	$thumb_pic1=create_thumb_image($tpath1,$thumbpath,'271','150');
    	$file_name= str_replace(" ","-",$_FILES['resim_kucuk']['name']);
    	$resim_kucuk=rand(0,99999)."_".$file_name;
    
         
        $data = [
        'resim' => $resim
        ];
    $sql = "INSERT INTO posts (image_url) VALUES (:resim)";
    $stmt= $pdo->prepare($sql);
    $stmt->execute($data);
    
      		 		
        		header( "Location:index.php");
        		exit;	
    
    		 
    	}
    
    
    ?>
    
                <div class="content-page">
                    <div class="content">
    
                        <!-- Start Content-->
                        <div class="container-fluid">
    
                            <div class="row">
                                <div class="col-12">
                                    <div class="card">
                                        <div class="card-body">
                                            <h4 class="header-title">File Upload</h4>
                
                                            <form action="" method="post" enctype="multipart/form-data">
                                                <div class="fallback">
                                                    <input type="file" name="resim" data-height="300" />
                                                </div>
    
                                        </div> <!-- end card-body-->
                                    </div> <!-- end card-->
                                </div><!-- end col -->
                            </div>
                            <!-- end row -->  
    
                            
                            
    
                      <div class="form-group">
                        <div class="col-md-9 col-md-offset-4">
                          <button type="submit" name="submit" class="btn btn-primary">Save</button>
                          <button type="reset" class="btn btn-danger">Clear</button>
                        </div>
                      </div> 
    				  
                                            </form>
                        </div> <!-- container -->
    
                    </div> <!-- content -->
codepacks
945 gün önce

Selam kardeşim senin için verot sınıfını kullanarak
istediğin biçimde resim ekleme hazırladım
tüm bilgiler webroot.zip dosyasında var sql dahil
sorun olursa yazabilirsin..

webroot.zip