mümkünse verdiğim herhangi bir boyuttaki resmi,
250*150 boyut oranına göre ve en boy oranını bozmadan küçültmesini istiyorum. web de bunu yapan site var mı?
mesela 500*100 resim varsa bunu 250*50 şeklinde, 250*300 resim varsa 125*150 şeklinde çıktı verecek.
basit bir script ile çözülebilir mi? sayfayı web alanında php olarak ta ekleyebilirim. dosya aç şeklinde alan olsun
resmi seçeyim ve bana mini boyutu kaydet şekinde versin
ücretli script teklifleri geldiği için konuyu revize etmek istiyorum.
daha basit olacağını hayal etmiştim. o zaman işimi daha kolaylaştırmalı
eğer mümkünse bir kelime arayayım. Google görsellerde
mesela barış Manço. gelen resimlerden birisini seçeyim ve onun istediğim oranlarda çıktısını istediğim klasör e kaydedeyim.
hem dosya aç hem de google search imkanı var mı?
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>