v2.5.2
Giriş yap

Görsel Upload Ederken Piksel Bozulması Hatası

ilkertuncer
475 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 -->
Cevap yaz
Cevaplar (6)
codepacks
755 gün önce
Dosya yollarını değiştirmemişsin 
ben  iki tane örnek yapmıştım  

1. uploads/kucuk         //buraya zaten kayıt etmiyordu boş dosya mantığı anlaman için bırakmıştım
2. uploads/resim/kucuk  //boyutlandırılmış küçük resimleri buraya kayıt ediyor 

bu kodu  
$upload->process("uploads/resim/kucuk");  

bununla değiştir
$upload->process("uploads/kucuk");  

dosya kayıt yollarını kendine göre ayarla 
nereye kayıt yapacaksan kayıt yollarını değiştirmen yeterli  

ayrıca aşağıdaki kodlardada resim boyutu var onuda değiştirebilirsin
$upload->image_x = 560; //örnek x boyut 271;
$upload->image_y = 320; //örnek y boyut 150;

ilkertuncer
750 gün önce

merahablar @codepacks. Yardımların için çok teşekkür ederim. Kodun sorunsuz bir şekilde işe yaradı! Fakat benim php de takıldığım bazı yerler var. Php de yeniyim ve kendimi geliştirmek istiyorum.
Yazmış olduğum panelim için bir TinyMCE editör'e ihtiyacım var. Hiçbir yerde bulamadım. Yardımcı olabilirsen çok memnun olurum

ilkertuncer
755 gün önce

Merhabalar codepacks. Her şey için minnetağrım kusura bakma seni çok yordum, fakat hala hata almaktayım :c

Database ini kurdum, database e isim kaydediyor aynı zamanda resim klasörüne resmin orjinalini de atmakta fakat /kucuk/ adlı dizine
görsel atmıyor ve hata veriyor.

Hatam:

Notice: A non well formed numeric value encountered in C:\xampp\htdocs\webroot\class.upload.php on line 2667
Notice: Trying to access array offset on value of type int in C:\xampp\htdocs\webroot\class.upload.php on line 2662
Notice: Trying to access array offset on value of type null in C:\xampp\htdocs\webroot\class.upload.php on line 2662
Notice: A non well formed numeric value encountered in C:\xampp\htdocs\webroot\class.upload.php on line 2667
Notice: Trying to access array offset on value of type int in C:\xampp\htdocs\webroot\class.upload.php on line 2662
Notice: Trying to access array offset on value of type null in C:\xampp\htdocs\webroot\class.upload.php on line 2662

Yardımcı olabilirsen çok memnun olurum :D

Notice: A non well formed numeric value encountered in C:\xampp\htdocs\webroot\class.upload.php on line 2667

codepacks
757 gün önce

çok garip bişe bende çalışıyor sıkıntı yok
birde bunuda dene olmasa uzaktan bağlantı ile yardımcı olurum size
çalışan hali ekran görüntüsünüde attım
https://www.hizliresim.com/aofn2jv
https://www49.zippyshare.com/v/ACnFxLOj/file.html

ilkertuncer
758 gün önce

@codepacks Merhabalar. Yardımların için minnettağrım.

Database'inizi kurduktan sonra hiçbir şeyi değiştrimeme rağmen

Fatal error: Array and string offset access syntax with curly braces is no longer supported in C:\xampp\htdocs\webroot\class.upload.php on line 2662

hatasını almaktayım :/

Yardımcı olursanız sevinirim.

codepacks
758 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