PHP Sitemdeki Görsel Boyutları Aşırı Yüksek - En yüksek 13 mb?
6
●117
- 09-02-2020, 14:27:23Merhaba, webde çok can sıkmıyordu bu durum ama projemin mobil uygulamasını kodlarken aşırı can sıkıcı olmaya başladı. Uygulamayı her açtığımda hiçbir işlem yapmasam bile en az 5mb internet yiyor... Api ile görsellerin urlsini alıp uygulamada internet üzerinden çekiyorum. 2700 civarı görsel var ve en yükseği 13mb. Diğerleri de 3,2,1 MB ve 800 - 700 kb arası değişiyor. Bu durumdayken uygulamayı yayına alamam. Ne yapmamı önerirsiniz? Toplu bir şekilde nasıl optimize ederim? Gelen görselleri nasıl daha fazla küçültebilirim? Ücretli ücretsiz yardım bekliyorum...
- 09-02-2020, 14:34:05facebook sıkıştırma algoritması baya iyi bu konuda bot yazıp resmi facebook sunucusuna yükleyip oradan tekrar indirebilirsiniz sunucuya ya da kendi sıkıştırma algoritmanızı yapmaya çalışın basit örnekleri internette vardı sanırım
- 09-02-2020, 14:35:07Görselleri sıkıştırman gerekecek ve bu sıkıştırılan görsel ile orjinal görselin url lerini saklayacaksın. örneğin picture-1.jpg -> picture-1-small.jpg bunun için küçük bir script hazırlayabilirsin veritabanına veya görsellerin klasörüne bağlanarak small şekle çevirebilirsin. PHP kullanıyorsan başına PHP İngilizce de bu işemlere PHP Image Compression, Resize & Optimization deniliyor google da aratabilirsin. 700kb ile 3kb arasında bir sıkıştırma yapabilirsin
- 09-02-2020, 14:37:02Zaten tinyjpg üctetsiz api kullanıyordum. Ona rağmen bu şekilde. Bu görsel upload olaylarına da kafam basmıyor hiçbir şekilde. Mantığını kavrayamadım. O nedenle bu tarz şeyleri entegre ederken zorlanıyorum
golgisistem adlı üyeden alıntı: mesajı görüntüle - 09-02-2020, 15:13:28Wordpress mi yoksa ozel kendi yazdigin bir script mi kullaniyorsun?berkaycatak adlı üyeden alıntı: mesajı görüntüle
- 09-02-2020, 15:16:22wordpress olsa bir ton eklenti var sorun olmazdı da kendim yazdığım scripti kullanıyorum
golgisistem adlı üyeden alıntı: mesajı görüntüle - 09-02-2020, 15:47:45Sunucunda PHP icin GD kütüphanesi var mı ?
Eski imageları kurtarmak için:
Görseller url leri mysql veritabanına bağlanıp çekebiliyor musun?
Görsellerin bulunduğu klasör senin sunucunda yer alıyor mu ?
Eğer bu sorulara yanıtın evet ise;
Bir sorgu yazarak imageların bulunduğu tablodan verileri çekerek işleme başlayabilirsin eğer çok image varsa LIMIT 100 , 200 şeklinde çekerek birkaç sayfada sıralayabilirsin.
Bu sorgudan gelen cevap şöyle olsun
id,image_name,...
image_name den gelenleri değişkene atarak
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); // butun olayi yapan bu return $destination_url; } $klasor = "images"; foreach($sorgu as $row){ $image_name = $row['image_name']; $fullPath = $klasor.'/'.$image_name; $quality = 60; // 1 - 100 e kadar $destination_url = $fullPath; // eger istersen burayi degistirebilirsin baska bir yere kaydetmek istersen ornegin images klasorunun disina compress_image($fullPath $destination_url, $quality); } //bunun gibi bir tarz kodu gelistirerek ise baslayabilirsin upload yaparken de upload yaptigin yerde yine bu function i kullanabilirsin.Yeni image eklerken
$file_tmp =$_FILES['image']['tmp_name']; $file_name = $_FILES['image']['name']; move_uploaded_file($file_tmp,"images/".$file_name); compress_image("images/".$file_name, "images/".$file_name, 60);Bu tarza benzer bir kod gelistirebilirsin ben ornek verdim calisip calismadigindan emin degilim.
son olarak github ta bu konuyla ilgili milyonlarca repository var orayi da inceleyebilirisin ornek olarak
github php compress
berkaycatak adlı üyeden alıntı: mesajı görüntüle