Mūsdienu pasaulē, kur redzamās reprezentācijas ieņem centrālo lomu, efektīva attēlu apstrāde tīmekļa lietojumprogrammās ir būtiska. Daudzas lietojumprogrammas ir jāskalē attēli, lai tos padarītu vienota izmēra. Šajā apmācībā es parādīšu, kā to izdarīt PHP lietojumprogrammā, palielinot augšu augšupielādēto attēlu augstumu.
Galvenās atziņas
- Skalējot attēlus, tiek uzlabota lietojamība un lietojumprogrammas ielādes ātrums.
- Skalēšana notiek, aprēķinot platumu un augstumu, saglabājot proporcijas.
- Arhivējošos glabāšanas vai kešatmiņas risinājumos ir svarīgi, lai saglabātu sistēmas resursus.
Solus pa solim instrukcija
1. Izveido attēlu kontrolieri
Pirmajā solī izveido jaunu kontrolieri, ko nosauksim par ImageController.php. Šajā kontrolierī īstenosi rīcību, lai parādītu attēlus. Rīcība saņems ID kā parametrus, lai iegūtu konkrēto attēlu.

Failā definē klasi un atbilstošās metodes. Tam ietilpst metode viewAction, kur jāpārsūta ID kā parametrs un jānoregulē attēla platums. Mēs sākam ar noklusējuma vērtību 250.

2. Iegūsti attēlu datus
Vispirms jāiegūst attēlu dati, izmantojot palīgrīka klasi. Pieņemsim, ka tev jau ir klase ar nosaukumu ImageUtility, kas nodrošina renderēšanas metodi. Šī metode izmantos attēla ID un platumu kā parametrus.

Tu nosaki galveni par satura tipu, lai nodrošinātu, ka attēli tiek pareizi apstrādāti kā JPEG faili.
3. Ievies skalēšanas loģiku
Izveido metodi renderImage ImageUtility klasē. Šī metode pieņem attēla ID un augstumu kā parametrus. Šeit mēs arī dinamiski aprēķināsim platumu, lai attēli tiktu attēloti vēlamajā augstumā.

Papildini kodu, lai tu varētu iegūt attēlu datus no datubāzes, balstoties uz nodotu attēla ID. Pārliecinies, ka tev ir metode tavā resursu modelī, lai iegūtu attēlu datus.

4. Aprēķini jauno platumu
Tagad nāk klāt jaunā platuma aprēķins. Tajā pašā laikā mēs nolasām attēla oriģinālo platumu un augstumu, lai saglabātu proporciju.
Screenshot_567
5. Izveido jauno attēlu
Pēc tam, kad jaunais platums ir aprēķināts, tu izveido jaunu attēlu ar funkciju imagecreatetruecolor(). Šajā funkcijā norādi jauno platumu un augstumu.

Izmanto funkciju imagecopyresized(), lai skalētu orģinālo attēlu uz jauninātiem izmēriem.

6. Izvadīt skalēto attēlu
Lai veiksmīgi atgrieztu attēlu pārlūkā, tu izmanto izvades buferi. Tu izmanto imagejpeg() vai imagepng(), atkarībā no tā, kādu formātu izmanto.
Šajā brīdī vienmēr jānodrošina, ka buferis tiek attīrīts, lai izvairītos no atmiņas noplūdēm. Noslēgumā tu atgriez datus no funkcijas, lai attēls tiktu attēlots.

7. Pārbaudi īstenošanu
Tagad tu vari pārbaudīt savu kontrolieri tieši pārlūkā. Tu vari nodot konkrēto attēla ID caur URL un tas tiks parādīts_scaled. Pārliecinies, ka tu arī pārbaudi kļūdas un sūti attiecīgos HTTP galvenes, ja attēls nav atrasts.

Ja attēls netiek pareizi attēlots, pārbaudi kodu meklējot potenciālas kļūdas vai rakstības kļūdas. Ja nepieciešams, pielāgo attēla parametrus.

8. Ievies kešatmiņas risinājumu
Ilgtermiņā tu būtu jāpārdomā kešatmiņas risinājuma ieviešana. Tas ļauj saglabāt reizi ģenerētus, izmērītus attēlus ātrākai piekļuves ātrumam turpmākajās pieprasījuma reizēs. Tas ietaupa procesora resursus un laiku.
Kopsavilkums – Bildes Skalēšana Orientētā Tīmekļa Programmēšanā ar PHP
Šajā apmācībā tu esi iemācījies, kā skalēt attēlus savā PHP lietojumprogrammā. Sākot ar Image kontroliera izveidi, es tev parādīju, kā dinamiski pielāgot attēlus un veikt efektīvus aprēķinus, lai sasniegtu vienotu augstumu. Ar papildu optimizācijām un kešatmiņas mehānismiem vari uzlabot savas lietojumprogrammas veiktspēju.
Bieži uzdotie jautājumi
Kāds ir attēlu skalēšanas mērķis?Attēlu skalēšana uzlabo lietojamību un ielādes ātrumu tīmekļa lapām.
Kā es varu pārliecināties, ka mans attēls tiek pareizi skalēts?Pārliecinies, ka saglabā proporcijas, aprēķinot platumu proporcionāli augstumam.
Kādi ir kešatmiņas risinājuma ieguvumi?Kešatmiņas risinājums saglabā jau izmērītus attēlus, samazinot aprēķinu slodzi un ielādes laiku atkārtoti piekļuves gadījumos.
Vai kešatmiņas risinājums ir obligāts?Lai gan tas nav obligāts, to ļoti iesaka, lai saglabātu sistēmas resursus un uzlabotu veiktspēju.