Yüksek kaliteli görsellerin, internet ortamında web sayfasında yüklenmesi zaman alır. Özellikle site açılış hızlarının çok önemli olduğu bu dönemlerde sisteminize yüklenen görselleri sıkıştırmak, boyut açısından size çok büyük fayda sağlayacaktır.
Yüklerken birden çok boyutta görüntü dosyası oluşturabilir ve gerektiğinde düşük ve yüksek kaliteli görüntüleri kullanabilirsiniz. Örn: kalite1/1.jpg kalite2/1.jpg gibi.
Yapacağımız işlem görüntü boyutunu küçültürken, aynı zamanda kalitesini de düşürür. Bundan dolayı görüntü işleme kalitesi orantılı şekilde yönetmeniz gerekecektir.
Dilerseniz başlayalım.
HTML
Form içerisinde görsel yüklebileceğimiz bir File elementi oluşturalım.
1 2 3 4 | <form method='post' action='' enctype='multipart/form-data'> <input type='file' name='imagefile' > <input type='submit' value='Upload' name='upload'> </form> |
PHP
Yüklenen görseli alalım. Ve compressImage() fonksiyonu ile sıkıştırma işlemini yapalım.
Bu fonksiyon 3 adet parametre alır;
- Kaynak dosya
- Hedef dosya
- Kalite
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | <?php if(isset($_POST['upload'])){ // Dosya adını alalım $filename = $_FILES['imagefile']['name']; // Gelen dosya bir görsel mi? $valid_ext = array('png','jpeg','jpg'); // Nereye kaydedelim? $location = "images/".$filename; // dosya uzantısı işlemleri $file_extension = pathinfo($location, PATHINFO_EXTENSION); $file_extension = strtolower($file_extension); // uzantı kontrolü if(in_array($file_extension,$valid_ext)){ // Resmi sıkıştıralım. Kalitesi 60 olsun. compressImage($_FILES['imagefile']['tmp_name'],$location,60); }else{ echo "Bilinmeyen dosya uzantısı."; } } // görsel sıkıştırma fonksiyonumuz function compressImage($source, $destination, $quality) { $info = getimagesize($source); if ($info['mime'] == 'image/jpeg') $image = imagecreatefromjpeg($source); elseif ($info['mime'] == 'image/gif') $image = imagecreatefromgif($source); elseif ($info['mime'] == 'image/png') $image = imagecreatefrompng($source); imagejpeg($image, $destination, $quality); } ?> |
Sonuç
Örnekte, orijinal boyuttaki görüntüyü değil, yalnızca sıkıştırılmış görüntüyü sakladık. Siz yükleme sırasında görüntülerin her iki sürümünü de saklayabilirsiniz.
Boyutu küçültürken görüntü kalitesini de ayarlamayı unutmayın.
Bu makaleyi yararlı bulduysanız paylaşmayı unutmayın. Teşekkür eder, herkese kolaylıklar dilerim.