Merhabalar,
Yüklediğimiz resimlerin sitemizde güzel ve orantılı gözükmesini hepimiz isteriz. Bunun için bazen css ile resimleri boyutlandırıyoruz. Bazen ise resimleri sunucuya yüklerken boyutlandırmamız gerekiyor. Buraya kadar her şey normal, çünkü internet ortamında bulabileceğiniz onlarca kod var. Fakat çoğunda png boyutlandırırken resimlerin saydamlığı kaybolmakta. Ben ise bugün tamamen kayıpsız bir şekilde resimleri 3 farklı boyutta nasıl boyutlandırabileceğinizi anlatacağım.
Öncelikle kullanacağımız kod parçası;
<? // yüklenecek klasör $upload_dir = "../uploads/"; // kabul edilebilecek resim formatları $valid_formats = array("jpg", "jpeg", "png"); // maksimum resim boyutu $max_size = 1048576; // resim boyutları $nw = $nh = 800; $nw1 = $nh1 = 400; $nw3 = $nh3 = 200; $nw2 = $nh2 = 100;</p> <p>if (is_dir($upload_dir) && is_writeable($upload_dir)) { if (!empty($_FILES['image'])) { $name = $_FILES['image']['name']; if ($_FILES['image']['error'] == 4) { $message = "Empty FIle"; } if ($_FILES['image']['error'] == 0) { if ($_FILES['image']['size'] > $max_size) { echo "E-Image is too large!<br>"; $_SESSION['alert'] = "Image is too large!!"; } else if (!in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)) { $_SESSION['alert'] = "This image is not a valid image format!!"; echo "E-This image is not a valid image format<br>"; } else if (file_exists($upload_dir . $name)) { $_SESSION['alert'] = "Image already exists!!"; echo "E-Image already exists<br>"; } else { $size = getimagesize($_FILES['image']['tmp_name']); $x = (int) $_POST['x']; $y = (int) $_POST['y']; $w = (int) $_POST['w'] ? $_POST['w'] : $size[0]; $h = (int) $_POST['h'] ? $_POST['h'] : $size[1]; $big_image_path = $upload_dir . "big/" . $name; $medium_image_path = $upload_dir . "medium/" . $name; $small_image_path = $upload_dir . "small/" . $name; if (!is_dir($upload_dir . "big/") && !is_writeable($upload_dir . "big/")) { mkdir($upload_dir . "big/", 0777, false); } if (!is_dir($upload_dir . "medium/") && !is_writeable($upload_dir . "medium/")) { mkdir($upload_dir . "medium/", 0777, false); } if (!is_dir($upload_dir . "small/") && !is_writeable($upload_dir . "small/")) { mkdir($upload_dir . "small/", 0777, false); } $data = file_get_contents($_FILES["image"]["tmp_name"]); $vImg = imagecreatefromstring($data); $dstImg = imagecreatetruecolor($nw, $nh); imagealphablending($dstImg, false); $trans_colour = imagecolorallocatealpha($dstImg, 0, 0, 0, 127); imagefilledrectangle($dstImg, 0, 0, $w, $h, $trans_colour); imagesavealpha($dstImg, true); imagecopyresampled($dstImg, $vImg, 0, 0, $x, $y, $nw, $nh, $w, $h); imagepng($dstImg, $big_image_path); $dstImg1 = imagecreatetruecolor($nw1, $nh1); imagealphablending($dstImg1, false); $trans_colour1 = imagecolorallocatealpha($dstImg1, 0, 0, 0, 127); imagefilledrectangle($dstImg1, 0, 0, $w, $h, $trans_colour1); imagesavealpha($dstImg1, true); imagecopyresampled($dstImg1, $vImg, 0, 0, $x, $y, $nw1, $nh1, $w, $h); imagepng($dstImg1, $medium_image_path); $dstImg2 = imagecreatetruecolor($nw2, $nh2); imagealphablending($dstImg2, false); $trans_colour2 = imagecolorallocatealpha($dstImg2, 0, 0, 0, 127); imagefilledrectangle($dstImg2, 0, 0, $w, $h, $trans_colour2); imagesavealpha($dstImg2, true); imagecopyresampled($dstImg2, $vImg, 0, 0, $x, $y, $nw2, $nh2, $w, $h); imagepng($dstImg2, $small_image_path);</p> <p>} } } } else { mkdir($upload_dir, 0777); }
Burada ne yapıyoruz;
Öncelikle kabul edilecek resim formatlarını belirliyoruz. Daha sonra istediğimiz resim ölçülerini belirleyip buna göre resimlerimızı boyutlandırıyoruz. Burada sizin yapmanız gereken tek şey image name ile bir formdan dosya göndermek.