PHP-s saate pildi suurust muuta, kasutades sekkumispiltide kogu
Kas otsite, kuidas muuta PHP-s piltide suurust? Veebirakenduses töötades peame looma originaalpildi erinevad pisipiltide versioonid. Pisipilt on teie algse pildi suurusega versioon. Selles artiklis uurime, kuidas pilte PHP-s üles laadida ja suurust muuta.
Miks peaksime piltide suurust muutma?
Veebisaidil on mitu stsenaariumi, kus peame kuvama suure pildi lühikese versiooni. Populaarne näide on pildigalerii. Galeriis näitasime varem väikeste piltide loendit. Kui kasutaja klõpsab väikesel pildil, avaneb see hüpikaknas suur pilt. Teine näide on seotud artiklite kuvamine, kus näitame väikseid pilte koos postituse pealkirja ja kirjeldusega.
Nendes stsenaariumides peame genereerima väikese pildi (pisipildi), kasutades meie algset pilti. Väike pisipilt vähendab teie lehtede suurust. Kuna kasutate väikest pisipilti, nõuab brauser pildi laadimiseks väikest ribalaiust. See lisab veebisaidile mõningaid eeliseid. Mõned neist on:
- Parandab serveri jõudlust
- Vähendage ribalaiust
- Parandage lehe kiirust
Nagu öeldud, vaatame, kuidas pilti PHP-s muuta.
Alustamine
Sekkumispilt on avatud lähtekoodiga teek, mis toimib pildi suuruse muutmise tööriistana. Kapoti all kasutab Intervention Image piltide töötlemiseks ja manipuleerimiseks GD Library ja Imagick.
Alustamiseks peate rakendusse installima sekkumispildi teegi. Teegi installimiseks soovitan kasutada Composerit.
Avage oma projekti juurkataloogis terminal ja käivitage allolev käsk.
composer require intervention/image
Pärast teegi installimist peate oma rakenduse lisama selle keskkonna. Selleks lisage PHP-faili alla kaks rida.
<?php
// include composer autoload
require 'vendor/autoload.php';
use InterventionImageImageManagerStatic as Image;
Pildi üleslaadimiseks ja suuruse muutmiseks vajame vormi, kus saab pilti sirvida ja vajutada nuppu Esita. Kasutage allolevat HTML-i, mis sisaldab failisisestust ja nuppu Esita.
<form method="post" enctype="multipart/form-data">
<p><input type="file" name="image" /></p>
<input type="submit" name="submit" value="Submit">
</form>
PHP-s saate pildi suurust muuta, kasutades sekkumispilti
Oleme installinud raamatukogu ja loonud vormi. Järgmisena peame pildi lennult üles laadima ja selle suurust muutma. Kavatsen luua kaks kataloogi uploads
ja thumbnails
. Kui uploads
kausta, me salvestada originaal pilt. Kujutise pisipildiversioon salvestatakse thumbnails
kataloogi.
Kasutage allolevat koodi, mis salvestab pildi algse ja pisipildi versiooni kataloogidesse uploads
ja thumbnails
kataloogidesse.
<?php
require 'vendor/autoload.php';
use InterventionImageImageManagerStatic as Image;
$allowed_mime_type = array('image/jpg', 'image/jpeg', 'image/png', 'image/gif');
if (isset($_POST['submit'])) {
if (in_array($_FILES['image']['type'], $allowed_mime_type)) {
if (!file_exists('uploads')) {
mkdir('uploads', 0755);
}
$filename = time().'_'.$_FILES['image']['name'];
$filepath = 'uploads/'. $filename;
move_uploaded_file($_FILES['image']['tmp_name'], $filepath);
if (!file_exists('uploads/thumbnails')) {
mkdir('uploads/thumbnails', 0755);
}
$thumbnailpath = 'uploads/thumbnails/'. $filename;
$img = Image::make($filepath);
$img->resize(300, null, function ($constraint) {
$constraint->aspectRatio();
});
$img->save($thumbnailpath);
}
}
Ülaltoodud koodis andsin laiuseks 300 ja muutsin pildi suurust, säilitades nende kuvasuhte. Laiuse väärtuse saate edastada vastavalt oma nõudele. Kujutise suuruse muutmisel on soovitatav hoida kuvasuhet. Kuvasuhet kasutades pilt ei venita. Kui otsite kõva saaki, siis asendage allpool olevad read
$img->resize(300, null, function ($constraint) {
$constraint->aspectRatio();
});
Koos
$img->resize(300, 150)->save($thumbnailpath);
Järeldus
Selles õpetuses uurisime, kuidas muuta piltide suurust, säilitades nende kuvasuhte. Kirjutasime ka koodi, mis kärbib pilti kõvasti. Sekkumise pildikogu pakub resize
meetodile veel mõned võimalused. Võite selle kohta rohkem lugeda nende dokumentatsioonist.