vysoce kvalitní obrázky vyžadují čas načtení na webovou stránku v závislosti na počtu obrázků.
při nahrávání můžete vytvořit více velikostí obrazového souboru a v případě potřeby použít obrázky nízké a vysoké kvality.
při zmenšení velikosti obrazu pak také snižuje jeho kvalitu.
nejlepším příkladem je WordPress, kdykoli je nahrán obrazový soubor, vygeneruje jinou velikost souboru. Tyto obrázky budou použity v tématu podle požadavku.
v tomto tutoriálu vám ukážu, jak můžete komprimovat velikost obrázku při nahrávání pomocí PHP.
obsah
- HTML
- PHP
- závěr
1. HTML
Vytvořte prvek <input type='file'>
v <form>
a odešlete tlačítko.
Vyplněný Kód
<form method='post' action='' enctype='multipart/form-data'> <input type='file' name='imagefile' > <input type='submit' value='Upload' name='upload'> </form>
2. PHP
vytvořte adresář images
pro ukládání obrazových souborů.
vlastní funkce
Vytvořte funkci compressImage()
pro kompresi obrázků JPEG, PNG a GIF.
funkce má 3 parametry –
1. Zdroj
2. Cíl
3. Kvalita souboru
voláním imagecreatefromjpeg($source)
, imagecreatefromgif($source)
a imagecreatefrompng($source)
vytvořte nový obrázek podle hodnoty $info
.
spusťte metodu imagejpeg()
pro uložení obrázku do cíle. Zde je třetí parametr quality
volitelný. Trvá hodnotu od 0-100 a výchozí hodnota je 75.
formulář odeslat
Nastavte umístění na images
adresář a zkontrolujte příponu souboru. Pokud je platný, pak volejte compressImage()
funkci, kde projít $_FILES
,$location
a 60
.
Vyplněný Kód
<?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. Závěr
v příkladu jsem uložil pouze komprimovaný obrázek, nikoli obrázek původní velikosti. Při nahrávání můžete uložit obě verze obrázků.
upravte kvalitu obrazu při zmenšení velikosti.
pokud vám tento tutoriál připadá užitečný, nezapomeňte jej sdílet.