Komplex skála képek php

Komplex kép méretezés PHP

A probléma lényege

Az első ötletek

A kezdetektől fogva a projekt, azt tudta, hogy nincs olyan dolog, mint a Perl ImageMagicknek. Nem sikerült futtatni ezt a csodálatos egységet. Aztán áttért a PHP, és rájöttem, hogy a Perl nem igazán alkalmas az ilyen dolgokat. A PHP az is lehetséges, hogy a képeket a GD-modul. Bár ő könnyebb lesz, de a zoom funkció is van, mint szükséges.

Nyilatkozat a problémát - írja a forgatókönyvet, hogy megkapja az utat az eredeti képet és levezethető image / jpeg adatok - a képet a kívánt formátumban (lásd a leírást a HTTP protokoll.).

zoom script resize.php

Lássuk az elején a script:

Itt, mint általában ellenőrizte a bemeneti paramétereket. Persze, akkor meg szigorúbb vizsgálati körülmények között. Nézd tovább.

Ebben a részben a program betöltjük az eredeti képet a változó $ src. Funkciók ImageSX ImageSY és meghatározza a mérete az eredeti kép, és rögzíti azokat a megfelelő változókat. Szükségünk van rájuk számítani az együttható az arányosság. Itt a header függvény peredaom header Content-type: image / jpeg a felhasználó böngészőjének. Ezt követően azt várja, hogy a következő adatfolyam jpeg-fájlt.

A következő feltétel felelős a méret a kimeneti kép, és közvetlenül mögötte a kimenet. Lehetőség van arra, hogy az eredeti képnek a kívánt méretet. Ha nem ez a helyzet. Mi lesz feldolgozni. Ehhez tegye a következő feltétel:

A következő rész a program fogja igazítani a kép szélessége 218 képpont (arányos csökkentés) esetén a $ type = 1.

A következő rész a kód teljesen felesleges. Nyomtat egy tetszőleges címke a kész képet. Sőt, kontrasztos szín: sötét alapon fehér betűkkel a fény - fekete. Először meghatározzuk a koordinátákat a szöveggel (ebben a példában, a jobb alsó), és három színben - $ fehér. $ $ Fekete és szürke segítségével ImageColorAllocate funkciót. Azt, hogy milyen színű nyomtatás címke, hasonló a színe pont (imagecolorat funkció), ami egy feliratot a „átlagos” színes $ szürke. Ha a pont a szín világosabb lesz, mint a szürke, a fekete felirata ($ color = $ fekete). Ha a pont a színe sötétebb lesz, szürke, a címke fehér lesz ($ color = $ fehér). Végül meghatározzuk a string $ str okoz funkcióját ImageString. meghatározva a betűméret, helyzete, vonal és szín. Megjegyzendő, hogy ez a funkció megjeleníti csak egyféle latin betűkkel. Bár senki sem tiltja, hogy a TrueType betűkészletek, az előny az ilyen feladatok vannak.

Úgy néz ki, egy kicsit bonyolultabb kódrészletet egy négyzet alakú darabot.

Nem határozza meg a zoom tényező lesz a kép négyzet ismert méretű előre. A kép méretét lehet háromféle - vízszintes, függőleges és szögletes. Az első két esetben, meg kell vágni és átméretezni a négyzet területe a téglalap alakú képet. A harmadik - csak méretezni.

Kissé magyarázza szerkezete: kerek ((max ($ w_src, $ h_src) - min ($ w_src, $ h_src)) / 2). Ez a kifejezés kiszámítja a koordináta x vagy y a bal felső sarkában a tér blokk (nincs különbség a vízszintes vagy függőleges kép). Ez látható az ábrán.

Normális vízszintes képek (arcok, tájak, tárgyak) a leginkább informatív része a központ, és a függőleges (leggyakrabban érdemes fő) - a legfontosabb tetején. Ha módosítani szeretné a függőleges vágás egy darab a kép, a következő sort:

helyettesíteni lehet

Aztán a függőleges kép nem fog a felső részét, és az átlagos (ez függ a helyét a tárgyak a képen). Hasonlóképpen, akkor megteszi az alsó része, vagy a jobb / bal oldali vízszintes kép - Kísérlet koordinátákat. Különösen ez a módszer akkor hasznos, ha azt szeretné, hogy hozzon létre egy szögletes „előzetesek» (bélyegképek) egy táblázatban.

Végén a kimeneti kép imagejpeg (), és törölje a memóriát imagedestroy ().

zoom demonstrációs

Szóval nem kell kétségbeesetten változtatni a bemeneti változók a hibakeresési folyamatban a helyi szerveren, kínálok egy bemutató oldalt, amely betölti a négy képek különböző formátumokban. Vizsgáljuk meg az eredeti képet kell tárolni az aktuális könyvtárban nevek alatt kep1.jpg és image2.jpg. Azt is meg kell resize.php fájlt. amely termel kiadási jpeg-kép.

Ez a szkript meglehetősen egyszerű, csak létrehoz egy oldalt, link, végzi az összes navigációs a képeken könyvtárban. Minden munka betöltésének képeket készített resize.php. Ez lehet alapul venni, egy egyszerű webes albumot.

Miért nem a GD?

Hibakereső szkriptek Windows, így magyarázza a megoldást a problémára az, hogy ez az OS. Inkább, a script hibás működést hiányában php_gd.dll modul (vagy újabb php_gd2.dll). Nyissa meg a mappát a tolmács PHP hozzon létre egy könyvtárat a bővítményeket, ha még nem létezik. Keresse egység felett - ő a teljes eloszlás PHP. Előírni php. ini (rejlik a C: \ Windows) vonal extension = php_gd2.dll (és ezzel együtt extension_dir = "c: \ php \ kiterjesztéseket." Ha ez nem szerepel). Paths eltérő lehet. Ezt követően, mindent meg kell dolgozni. Ne „mix” modulokat php_gd.dll és php_gd2.dll - tolmács fog panaszkodni, hogy a párhuzamos feladatellátás a könyvtárakban.

következtetés

Kapcsolódó cikkek