Creați miniaturi imagine în miniatură în PHP
![Creați miniaturi imagine miniatură în PHP (se întoarce șir fals) Creați miniaturi imagine în miniatură în PHP](https://webp.images-on-off.com/26/919/434x169_2fmrgjwpbhrhuwccz4cs.webp)
Ordinea de zi - scalare imagine și generatsiyathumbnails la pomoschiPHP .Pe acest subiect suficient de articole. Unii dau doar o teorie, unele doar practică, iar unii nu înțeleg deloc ce scrise.
În acest articol nu vreau să intru în teoria arabescuri, în drum și care pot fi reduse și trunchiate. Voi obține dreptul de a practica. Consider un script crearea de miniaturi și imaginile miniatură.
Crearea de miniaturi php
Mai întâi de toate, două lucruri. În primul rând, voi folosi imaginea originală și pânză miniaturi pe termen. Dacă primul clar, apoi pe a doua, voi explica că suntem din imaginea originală va fi copiat imaginea creată din nou, care este, de fapt, va fi creat pânza pentru miniaturi. În al doilea rând, să facă o listă de proprietăți care script-ul ar trebui să aibă.
Sarcina - de a crea un script pentru a lucra cu imagini, cu următoarele caracteristici:
- Acesta ar trebui să lucreze cu jpeg, gif, png.
- Aceasta permite reducerea imaginii la o lățime sau înălțime specificată
- Acest lucru vă permite să creați miniaturi (miniaturi) fotografii, respectați regulile:
a) Dacă lățimea și înălțimea imaginii originale mai mult. decât miniaturile panza, imaginea trebuie să fie redusă, astfel încât acesta este ocupat complet domeniul panza in miniatura. În acest caz, în cazul în care o parte din imaginea redusă va ieși dincolo de panza in miniatura, acestea ar trebui să fie tăiate.
b) Dacă lățimea imaginii este mai mare. decât lățimea de o miniatură a pânzei, iar înălțimea este mai mică. imaginea este centrată pe miniatura pânză, părțile sale proeminente sunt tăiate și spațiile goale sunt umplute cu culoarea specificată.
c) În cazul în care înălțimea imaginii mai mult. decât înălțimea de panza in miniatura, iar lățimea este mai mică. imaginea este centrată pe miniatura pânză, părțile sale proeminente sunt tăiate, iar spațiul este umplut cu culoarea specificată.
g) În cazul în care înălțimea și lățimea imaginii mai mici. decât înălțimea și lățimea de panza in miniatura, imaginea este centrată pe miniaturile de panza, iar spațiul liber este umplut cu specificat tsvetov.Funktsiya prezentate mai jos. Deci, să ne considerăm acum o funcție care îndeplinește toate elementele enumerate mai sus.
Linii 1-2. Inițializare funcția. $ Src - numele fișierului sursă, $ dest - numele fișierului generat, lățimea $, $ înălțime - lățimea și înălțimea în pixeli a imaginii generate. Parametrii opționali: $ rgb - culoarea de fundal, implicit - negru, $ calitate - calitate JPEG generate, în mod implicit - maximul (100).
Linia 3. Verificați dacă există un fișier specificat, iar dacă nu, funcția returnează false.
Linia 4: Apelați funcția getimagesize și masa rezultată este plasată în mărimea $.
Linia 5. Verificați dimensiunea imaginii rezultate - în cazul în care nu trece, atunci funcția returnează false.
String 6. În cazul în care numita funcție lățimea și înălțimea a trecut la zero, atunci aceeași funcție returnează false.
String 7-8. Scoateți raportul de aspect original al mime-type.
Rânduri 9-10. Conform formate de imagine tarat sunt numele a două funcții pentru lucrul cu imagini. Acest lucru este de a sprijini gif, jpg și png.
String 11-12. Verificați dacă există astfel de caracteristici, vom crea un șir înainte.
13. Apel șirul am creat o funcție (care imagecreatefrom).
Rândul 14. În cazul în care funcția a fost transferată la înălțimea egală cu zero, aceasta înseamnă că este necesar să nu creeze miniaturi, ci doar dintr-o imagine cu o lățime maximă specificată.
Linia 15. Calculati noua imagine de înălțime pe baza parametrilor de intrare și lățimea maximă transmise.
Rândul 16. Crearea unei imagini adevărat culoare gol.
Rânduri 17-18. Funcția ia imaginea originală, scuamelor și transferă pânza nou create (de la linia 16).
Rânduri 19-20. Imaginea va fi înregistrată în fișierul. În acest caz, în cazul în care un fișier jpeg, funcția este apelată cu calitatea transferului jpg pentru el.
O linie similară 22. Linia 14 este considerat numai pentru cazul în care a fost transmis lățimea zero.
Rânduri 23-28. Voi merge cu rândurile 15-20.
30. Dacă șirul trecut lățimea normală și înălțimea, atunci blocul următor de cod.
Rânduri 31-32. Se creează o adevărată culoare imagine și umplut cu culoarea dorită.
Rândul 33. În cazul în care înălțimea și lățimea imaginii încărcate este mai mică decât lățimea și înălțimea miniatura panza, apoi ...
Rânduri 34-35. Se calculează poziția decupării în partea de sus și spre stânga pentru a plasa imaginea originală pe miniatura panza.
Rânduri 36-39. Copiați imaginile originale pe miniaturi pânză și salvați-l într-un fișier.
Rândul 41. În cazul în care lățimea imaginii originale este mai mică decât lățimea de panza, iar înălțimea de mai mult ...
String 42-47. Aproximativ la fel ca și în liniile 34-39.
Rânduri 49-55. La fel ca linia 41-47, dar aici, în cazul în care lățimea imaginii originale pe lățimea pânză și înălțimea mai mică.
Rândul 57. În timpul blocul ei de cod se aplică în cazurile în care lățimea și înălțimea mai mare decât originalul lățimea și înălțimea miniaturii panza.
Rânduri 58-61. Alocați o nouă lățime pentru imagine și, în conformitate cu aceasta, în mod proporțional pentru a calcula înălțimea. Apoi vom calcula coordonatele indentare că imaginea a fost în mijlocul pânzei.
Rânduri 62-67. Dacă la recalculare la punctul precedent, sa dovedit că înălțimea este mai mică decât înălțimea miniaturii pânză, aici am atribui deja o nouă înălțime a imaginii și se calculează în funcție de aceasta lățimea. Apoi se calculează coordonatele indentare că imaginea a fost în mijlocul pânzei.
Rânduri 68-70. Creați o nouă imagine color adevărat și copiați-l pentru a micșora imaginea originală.
Rânduri 71-72. Primit imagine ultimul punct este acum copiat miniaturilor panza.
Rândurile 73-74 sunt deja familiare - ei salvați fișierul.
Rânduri 75-78. Memorie liberă de imagini create tempo.
Și acum exemplul evident. atunci cred că e simplu.