Merhabalar. Size kendi kodumu sunacağım. Ben bu işelmi olması gerektiği gibi ajax ile arka plandan çalıştırıyorum.
Kafanızı karıştırmasın. Oldukça basit bir şekilde anlattım.
https://github.com/ilkercvb33/php-ve-ajax-ile-veri-silme-islemi/
Bu linke tıklayarak kaynak kodlarımı görüntüleyebilir/indirebilirsiniz.
ÖNEMLİ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
README.TXT OKUMAYI UNUTMA! YOL HARİTAN O OLSUN. DİĞER SAYFALARA DAA RADME.TXT DEN YOL ÇIKARAK NE YAPMAN GEREKİYOR YAZDIM.
SANA TAVİSYEM OLDUĞU GİBİ DOSYALARI İNDİRMEN, README.TXT YE BAKARAK KENDİNE GÖRE UYARLAMAN VE ÇALIŞTIRDIKTAN SONRA KENDİ PANELİNE
ENTEGRE ETMEN
SORUN OLURSA YAZMAYI UNUTMA!
Selamlar @codepacks rar'daki çalışmanızın sorunsuz haline ihtiyaç dymaktayım derdimi yeni konuda https://prototurk.com/soru/5732-gorsel-upload-ederken-piksel-bozulmasi-hatasi burada anlattım. Size ulaşabileceğim bir e-mail adresiniz bulunmakta mıdır?
Merhabalar @codepacks yardımların için minnettağrım. Son attığın cevaptaki rar'ı indirdim ve kodlarını çalıştırdım fakat hala resmi küçülttüğümde kalitesi bozuk olarak küçültüyor.
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 -->
Merhabalar @codepacks. Klasöre yolladığım resmin adını veritabanına atacak bir kod var mı elinizde?
Merhabalar @codepacks. İlginiz için teşekkür ederim. Yaptığınız kod çalışıyor fakat resmin quality'sini %100 yapmama rağmen görünmeyecek halde bozuyor.
Aldığım çıktı şu şekilde: https://prnt.sc/35C8KU80fumL
Resmin orjinali: https://prnt.sc/2gytP5_LmFU4
Ayrıca Dosayı küçültünce çıkan hatam:
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line 34
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line 37
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line 40
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line 43
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line 50
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line 54
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line <57></57>
KODUM:
<?php
$file_name= str_replace(" ","-",$_FILES['resim']['name']);
$resim=rand(0,99999)."_".$file_name;
//orjinal halinde kayıt yeri (images/)
$tpath1='images/'.$resim;
$pic1=compress_image($_FILES["resim"]["tmp_name"], $tpath1, 90);
//kırpılmış halinde kayıt yeri
$thumbpath='images/small/'.$resim;
$thumb_pic1=create_thumb_image($tpath1,$thumbpath,'470','260'); // kaydedilecek resim boyutu değiştirilebilir
$file_name= str_replace(" ","-",$_FILES['resim']['name']);
$resim_cover=rand(0,99999)."_".$file_name;
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;
}
function create_thumb_image($target_folder ='',$thumb_folder = '', $thumb_width = '',$thumb_height = ''){
$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);
}
}
Bu konuda ne yapabilirim?
Merhabalar @codepacks.İlginiz için teşekkür ederim. Yaptığınız kod çalışıyor fakat resmin quality'sini %100 yapmama rağmen görünmeyecek halde bozuyor.
Aldığım çıktı şu şekilde: https://prnt.sc/35C8KU80fumL
Resmin orjinali: https://prnt.sc/2gytP5_LmFU4
Ayrıca Dosayı küçültünce çıkan hatam:
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line 34
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line 37
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line 40
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line 43
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line 50
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line 54
Warning: Undefined variable $file_ext in C:\xampp\htdocs\photo\upload.php on line <57></57>
KODUM:
<?php
$file_name= str_replace(" ","-",$_FILES['resim']['name']);
$resim=rand(0,99999)."_".$file_name;
//orjinal halinde kayıt yeri (images/)
$tpath1='images/'.$resim;
$pic1=compress_image($_FILES["resim"]["tmp_name"], $tpath1, 90);
//kırpılmış halinde kayıt yeri
$thumbpath='images/small/'.$resim;
$thumb_pic1=create_thumb_image($tpath1,$thumbpath,'470','260'); // kaydedilecek resim boyutu değiştirilebilir
$file_name= str_replace(" ","-",$_FILES['resim']['name']);
$resim_cover=rand(0,99999)."_".$file_name;
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;
}
function create_thumb_image($target_folder ='',$thumb_folder = '', $thumb_width = '',$thumb_height = ''){
$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);
}
}
Bu konuda ne yapabilirim?
Merhabalar @ebykdrms. Tekrardan ilgilendiğiniz için minnetarım. Kodunuzu olduğu gibi aldım, kütüphanemi kurdum ve veritabanı bağlantımı gerçekleştirdim. Ancak elde olan ty-catch blokların ıkaldırsam jda kaldırmasam da ütüpahnemdeki çektirdiğim WideImge.php dosyamda hata oluşuyor. Neden olduğun uanlayamadım
HATAM: {"type":"error","message":"Dosya bulunamad\u0131."}
Kdoum İse:
<?php
// Bu sayfayı json sonuç dönecek bir sayfa gibi düşünerek,
// kolay sonuç döndürmek için birkaç fonksiyon yazıyorum.
function sendJson($type, $message='') {
header('Content-Type: application/json; charset=utf-8');
echo json_encode(["type"=>$type, "message"=>$message]);
exit();
}
function sendError($message='') { sendJson("error", $message); }
function sendSuccess($message='') { sendJson("success", $message); }
// İşlemler buradan sonra başlıyor...
if(!isset($_FILES['my_file'])) sendError("Dosya bulunamadı.");
$fileName = $_FILES['my_file']['name'];
$fileSize = $_FILES['my_file']['size'];
$fileTmpName = $_FILES['my_file']['tmp_name'];
$fileType = $_FILES['my_file']['type'];
$fileExtension = explode('.',$fileName);
$fileExtension = end($fileExtension);
$fileExtension = strtolower($fileExtension);
if (!in_array($fileExtension,['jpeg','jpg','png'])) sendError('Dosya uzantısı geçersiz. Lütfen jpg veya png dosya seçin');
if ($fileSize > 4 1024 1024) sendError('Dosya boyutu 4 mb üzerinde olamaz.');
$bigImagePath = 'images/'.$fileName; // Bu php dosyasının olduğu aynı yerde images klasörü de olmalı.
$smallImagePath = 'images/small/'.$fileName; // Bu php dosyasının olduğu aynı yerdeki images klasörü altında small klasörü de olmalı.
$uploaded = move_uploaded_file($fileTmpName, $bigImagePath);
if(!$uploaded) sendError('Dosya kaydedilemedi.');
include "wideimage/lib/WideImage.php"; // Bu php dosyasının olduğu aynı yerde libraries klasörü de olmalı. İçine de WideImage.php dosyası eklenmiş olmalı.
$bigImage = WideImage::load($bigImagePath);
$smallImage = WideImage::load($bigImagePath);
$bigImage = WideImage::load($bigImagePath);
$smallImage = WideImage::load($bigImagePath);
$bigImageResized = $bigImage->resize(1000, 1000, 'inside'); // Görseli 1000x1000 piksellik alana sığacak şekilde boyutlandırır.
$smallImageResized = $smallImage->resize(300, 300, 'inside'); // Görseli 300x300 piksellik alana sığacak şekilde boyutlandırır.
try {
$bigImageResized->saveToFile($bigImagePath);
$smallImageResized->saveToFile($smallImagePath);
}
catch (Exception $e) { sendError("Görsel boyutlandırma başarısız oldu."); }
$db = null;
try { $db = new PDO("mysql:host=localhost;dbname=lpanel;charset=utf8", "root", ""); }
catch ( PDOException $e ){ sendError("Veritabanına bağlanılamadı."); }
$query = $db->prepare("INSERT INTO posts SET image_url = :fileName");
$insert = $query->execute(["fileName"=>$fileName]);
if(!$insert) sendError("Görsel adı veritabanına yazılamadı.");
sendSuccess("Görsel başarıyla kaydedildi.");
?>
Yardımcı olabilirseniz sevinirim
@ebykdrms merhabalar yazınızı okudum ve minnettarım. Dediklerinizi uyguladım WideImage'i kurdum ve veri tabanıma bağlantımı gerçekleştirdim. Fakat dosyayı upload ettiğim zaman: 1= $fileExtension = strtolower(end(explode('.',$fileName))); satırından ("Only variables should be passed by reference in") hatsanı ve aynı sayfada {"type":"error","message":"G\u00f6rsel upload edilememiş."} hatasını almaktayım. 1. hatayı internetten bulduğum bir yolla $tmp = explode('.', $filename);
$fileExtension = end($tmp); şeklinde düzelttim doğru bir yöntem midir? ama hala {"type":"error","message":"G\u00f6rsel upload edilememiş."} hatasına sahibim. (SANIRIM HATANIN KAYNAĞI images/small/ KLASÖRÜNE GÖRSEL ATMAMASINDAN KAYNAKLI). Yardımcı olabilirseniz sevinirim.