Képekkel dolgozik php
Ebben a cikkben szeretnék beszélni a probléma, amivel bármilyen webes fejlesztő, aki fejleszti az admin felületen az online boltban.
Arról beszélek, képfeldolgozás.
Persze, akkor feldolgozza a képet a Photoshop, és csak utána töltsd fel a szerverre. És mi van, ha a tartalom kezelő a helyszínen „néni Lucy”, ami még csak nem is lehet szerkeszteni fotók több, mint bármi más, mint olló és ceruza, majd feltölteni a képeket? Ebben az esetben minden erőfeszítést, néha nagy, lehet menni „teto Luce” az ötödik pont az elrendezés a webhely sablont.
Itt az idő, és én úgy döntöttünk, hogy töltse ki ezt a hiányt tudását. Körülbelül most és megbeszéljük.
Kezdjük az első probléma találkoztam - alakítjuk, .png, .jpg php eszközökkel. Úgy tűnt, lenne - megváltozott kiterjesztése, és kész. De ha elkezd dolgozni, hogy egy kép segítségével php, zrazy hibák jelennek meg.
A teljes átalakítás png jpg, írtam az alábbi függvényt:
Nézzük a funkció soronként:
A függvény két paramétert. Az első - ez az út a képet, és a második - egy módja annak, hogy a képeket. Ez úgy történik, az egyszerű használat és a rugalmasság. Megjegyzendő, hogy ezek a dolgok, meg kell adnia egy abszolút útvonal, viszonyítva a szerver root. Szóval milyen paraméterekkel kell:
Továbbá, függetlenül attól, hogy a fájl létezik a funkció ellenőrzi. Ez inkább a kényelmet.
A változó $ típusát, meg kell határoznunk, hogy milyen típusú heveder. Ugyancsak szükséges a megfelelő működését a program, mint Ha a kép nem PNG, akkor a függvény fog tüzet egy hibát.
Ha megnézzük leírás getimagesize () függvény az interneten, akkor valószínű, hogy talál valamit, mint a „vissza a kép méretét.” Sőt, a helyzet kissé más. A függvény visszaküldi nem csak a méret, hanem a bitek, csatornák számát és azt a fájltípust, de ez a visszavonulást.
Tehát, ez a funkció megkapjuk a fájltípust, és győződjön meg róla, ő volt a png. Ellenkező esetben a program egyszerűen másolja az eredeti képet a neve a végleges. A feladat még ilyen)))
Kezdve a hetedik sor, a függvény létrehozza a kép egy különleges tárgy, amellyel már lehetséges, hogy a szoftvert. Ez az objektum tárolja a változó $ forrás.
imagecreatetruecolor () függvény létrehoz egy képet a megadott méretű fekete (alapértelmezett tovább tudjuk átfestés). Ez az, amit mellékelünk egy png, hogy töltse ki a háttér fehér.
ImageColorAllocate function () csak létrehoz egy fehér kitöltés, amelyek együtt a $ source imagefill () függvényt. Így hát ez a fehér háttér.
És az utolsó lépés, ami figyelmet érdemel, az unió fehér alapon egy png-kép jött jpg.
Utolsó - az utolsó lépés a tárgy leképezett funkció imagejpeg (). Ahogy telt az a tárgy maga, az útvonalat, ahol a kép jön létre, és a minőség (75 is elég).
A végén, amint az a nevéből funkciók, memória felszabadul imagedestroy () függvény, hogy nem szükséges, mert a használat után php script, memória mindig automatikusan kiold, de ha az átalakítás után a kép program továbbra is folytatja a munkát, vagy a funkció a ciklus, akkor a legjobb, hogy törölje a memóriát - távol a bűntől.
Így hát ez egy egyszerű, első pillantásra, a funkciót.
Ha érdekel a konvertáló JPEG PNG. ami egy átlátszó hátteret a képet, elolvashatja itt. Ebben a cikkben, én nem beszélni róla, mert ez egy másik történet, és külön kell figyelembe venni.
A következő probléma találkoztam a kéreg - ez a kép átméretezés php.
Aztán segített a következő funkcióra, hogy meg kellett gyűjteni a morzsákat pendosovskih fórumok:
Ez a funkció némileg hasonló az előzőhöz, de ez egy kicsit sokoldalúbb.
Az első - ez határozza meg a fájl típusát, és attól függően, hogy milyen típusú, hozzon létre a különböző tárgyakat. Ugyanez vonatkozik a létrehozását a fájl végén a funkciót.
A második - ha ráadásul linkeket képeket és még adja meg a kép szélességét, akkor húzni a képet, és a párhuzamos száma szerint hány kell, hogy a magasságot, hogy a kép arányait.
Ha a takarmány funkciója a harmadik paraméter - a magassága a kép, akkor nem felel meg az arányokat, és azokat meghatározott módon a paramétereket.
Most tegyük fel, hogy az elrendezés az online áruház célja csak egy négyzet alakú kép 500 500 pixel. A vezetője „néni Lucy”, mik a terhelést.
Persze, akkor az előző funkciót, és kérje meg az utolsó két paraméter 500 és 500. De ebben az esetben, ha a kép eredetileg nem egy négyzet, akkor a kimenet kap feszített „szégyen”.
Ennek elkerülése érdekében meg kellett átírni a funkció, így elfér bármilyen képet egy négyzet, megtartva arányok (arányos átméretezés):
Már sokkal rugalmasabb, és nagyon hasonló az előzőhöz, kivéve, hogy csak 2 paraméter: az utat, hogy a kép és a méret az egyik fél. Ez létrehoz fehér négyzet fehér arányosan módosítja a kezdeti képfelbontás és vetíthető őket egymástól. Az eredmény egy szép, arányos a kép, meg kell méretét.
Ha bármilyen pontatlanságot, Szeretném hallani őket.