Görsel Upload Ederken Piksel Bozulması Hatası
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 -->
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (6)
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;
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
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
ç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
@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.
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..