högkvalitativa bilder tar tid att ladda på webbsidan beroende på antalet bilder.
du kan skapa flera storlekar på bildfilen när du laddar upp och använda bilder av låg och hög kvalitet när det behövs.
när du minskar en bildstorlek minskar den också dess kvalitet.
det bästa exemplet på detta är WordPress, när en bildfil laddas upp kommer den att generera en annan-annan storlek på filen. Dessa bilder kommer att använda i temat enligt krav.
i denna handledning visar jag hur du kan komprimera bildstorlek medan du laddar upp med PHP.
innehåll
- HTML
- PHP
- slutsats
1. HTML
skapa ett <input type='file'>
– element i <form>
och skicka-knappen.
Slutförd Kod
<form method='post' action='' enctype='multipart/form-data'> <input type='file' name='imagefile' > <input type='submit' value='Upload' name='upload'> </form>
2. PHP
skapa en images
katalog för att lagra bildfiler.
anpassad funktion
skapa en compressImage()
– funktion för att komprimera JPEG -, PNG-och GIF-bilder.
funktionen tar 3 parametrar –
1. Källa
2. Destination
3. Filkvalitet
Ring imagecreatefromjpeg($source)
, imagecreatefromgif($source)
och imagecreatefrompng($source)
för att skapa en ny bild enligt $info
värde.
kör imagejpeg()
metod för att lagra bilden till destinationen. Här är den tredje parametern quality
valfri. Det tar värde från 0 – 100 och standardvärdet är 75.
Form skicka
Ställ plats till images
katalog och kontrollera filändelsen. Om det är giltigt, Ring compressImage()
funktion där passera $_FILES
,$location
och 60
.
Slutförd Kod
<?phpif(isset($_POST)){ // Getting file name $filename = $_FILES; // Valid extension $valid_ext = array('png','jpeg','jpg'); // Location $location = "images/".$filename; // file extension $file_extension = pathinfo($location, PATHINFO_EXTENSION); $file_extension = strtolower($file_extension); // Check extension if(in_array($file_extension,$valid_ext)){ // Compress Image compressImage($_FILES,$location,60); }else{ echo "Invalid file type."; }}// Compress imagefunction compressImage($source, $destination, $quality) { $info = getimagesize($source); if ($info == 'image/jpeg') $image = imagecreatefromjpeg($source); elseif ($info == 'image/gif') $image = imagecreatefromgif($source); elseif ($info == 'image/png') $image = imagecreatefrompng($source); imagejpeg($image, $destination, $quality);}?>
3. Slutsats
i exemplet lagrade jag bara den komprimerade bilden, inte den ursprungliga storleken. Du kan lagra både versionen av bilder medan du laddar upp.
justera bildkvaliteten när du minskar storleken.
om du tyckte att den här handledningen var till hjälp, glöm inte att dela.