Merhaba
Resim seçerek dediğiniz boyutlarda yeniden boyutlandırmak için kodu aşağıda paylaşıyorum. Kendi projem için yapmıştım bir zaman.
Verdiğim kodu örneğin resize.php olarak kaydedin.
Bir tane de uploads klasör oluşturun.
PNG, Jpg, Jpeg, Webp resimler 250 x 150 ye boyutlandıracak ve oranları bozmayacak.
Umarım işinize yarar. Güle güle kullanın.
Daha fazla özellik isterseniz ücretli destek olabilirim.
<?php
// Boyutlandırma fonksiyonu
function resizeImage($source, $destination, $final_width, $final_height) {
// Resmin orijinal boyutlarını öğren
list($width, $height, $type) = getimagesize($source);
// Oranı hesapla
$aspect_ratio = $width / $height;
$new_width = $final_width;
$new_height = $final_height;
if ($final_width / $final_height > $aspect_ratio) {
// Boyutları orantılı küçültme
$new_width = (int) ($final_height * $aspect_ratio);
} else {
$new_height = (int) ($final_width / $aspect_ratio);
}
// Yeni bir resim oluştur
$image_p = imagecreatetruecolor($final_width, $final_height);
// Arka plan rengini ayarla (beyaz olarak)
$background_color = imagecolorallocate($image_p, 255, 255, 255);
imagefill($image_p, 0, 0, $background_color);
// Resmi oluştur
switch ($type) {
case IMAGETYPE_JPEG:
$image = imagecreatefromjpeg($source);
break;
case IMAGETYPE_PNG:
$image = imagecreatefrompng($source);
break;
case IMAGETYPE_WEBP:
$image = imagecreatefromwebp($source);
break;
default:
throw new Exception('Desteklenmeyen resim türü.');
}
// Resmi boyutlandır ve ortala
$src_x = ($new_width - $final_width) / 2;
$src_y = ($new_height - $final_height) / 2;
imagecopyresampled($image_p, $image, ($final_width - $new_width) / 2, ($final_height - $new_height) / 2, 0, 0, $new_width, $new_height, $width, $height);
// Yeni resmi kaydet
switch ($type) {
case IMAGETYPE_JPEG:
imagejpeg($image_p, $destination, 100);
break;
case IMAGETYPE_PNG:
imagepng($image_p, $destination);
break;
case IMAGETYPE_WEBP:
imagewebp($image_p, $destination);
break;
}
// Hafızayı temizle
imagedestroy($image_p);
imagedestroy($image);
}
// Dosya Yükleme İşlemi
if (isset($_FILES['uploadedFile'])) {
$target_dir = "uploads/";
if (!is_dir($target_dir)) {
mkdir($target_dir, 0777, true); // uploads dizinini oluştur ve yazılabilir yap
}
$target_file = $target_dir . basename($_FILES["uploadedFile"]["name"]);
// Dosyayı yükle
if (move_uploaded_file($_FILES["uploadedFile"]["tmp_name"], $target_file)) {
echo "Dosya başarıyla yüklendi: " . basename($_FILES["uploadedFile"]["name"]);
// Boyutlandırma işlemi (250x150 boyutlarına göre)
$resized_file = $target_dir . "resized_" . basename($_FILES["uploadedFile"]["name"]);
try {
resizeImage($target_file, $resized_file, 250, 150);
echo "Resim başarıyla boyutlandırıldı: " . $resized_file;
} catch (Exception $e) {
echo "Hata: " . $e->getMessage();
}
} else {
echo "Dosya yüklenirken bir hata oluştu.";
}
}
?>
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>Resim Yükle ve Boyutlandır</title>
</head>
<body>
<h2>Resim Yükle ve 250x150 Boyutlarında Boyutlandır</h2>
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="uploadedFile">
<input type="submit" value="Resmi Yükle ve Boyutlandır">
</form>
</body>
</html>