Helyes átméretezése átlátszó képeket php, kódolás

Főoldal> Coding> Jobb átméretezése átlátszó képeket PHP

Helyes átméretezése átlátszó képeket php, kódolás
Azt hiszem, minden web-programozó szembe azzal a feladattal, átméretezés képek. De ez nem csak lakik, és minden képfeldolgozó terveiket. És azt hiszem, már mindenki egy kis kerékpáros osztály függvényében, hogy átméretezni képeket. De ha valaha is gondoltam, hogy mi a kerékpár minden bizonnyal nem képes együttműködni átlátszó képeket?

Kudos a programozók, akik tudja tartani mindent, ami a fejét, és ne feledkezzünk meg az átláthatóság az írásban ezt a funkciót. De elfelejtettem az egyik projekt ... Bár, őszintén szólva, vettem naguglenny például érzékenyen felújított magának és épített a projekt. De ki tudja, hogy az ügyfél szereti betölteni egy átlátszó képet ...

A legtöbb esetben otresayzennye kapott képek fekete háttér helyett egy átlátszó (mint a kép a cikk címe). Új háttér persze lehet kapni olyan szín, ez még mindig nagyon függ a kép, és a formátumát. De a probléma még mindig az úgynevezett „fekete háttér átlátszó átméretezés képek.”

Mint mindannyian tudjuk, a web tipikusan három kép formátumok: PNG, GIF, JPEG. Ennek megfelelően, átlátható lehet csak PNG és GIF. A JPEG nem támogatja az átlátszóságot. Ez a mi feladatunk, hogy megértsük, hogyan kell helyesen átméretezi PNG és GIF. Ezek a formátumok átláthatóság realizovanna másképp, és kezeli azokat ennek megfelelően kell más.

PNG átméretezés

Azt hiszem, ez nem titok, hogy realizovanna PNG alfa csatorna támogatása. Azaz, mivel négy-ágyas színes komponensek: R (piros), G (zöld), B (kék), az alfa. Alpha csatorna átláthatóság definiál egy adott pixel. De ez minden, akkor már tudja, vágott a közepébe.

Az okok a fekete háttér PNG átméretezése három:

  • A programozó nem hoz létre színes képet. Ie használja ImageCreate funkció helyett imagecreatetruecolor
  • Programozó elfelejti kikapcsolni az átfedő áttetsző színű (vagy ha ez a helyes - „színes párosítás üzemmódban”) segítségével imagealphablending funkciót. Az a tény, hogy imagecreatetruecolor létrehoz egy képet egy fekete háttér. Amikor a „párosítás mód szín” átlátszó pixel, nem helyettesíti a háttérben, és fogják kiszámítani szerint az új szín, új színt és a háttér színe alapján az alfa csatorna egyes színek - a végén, hogy egy teljesen átlátszó pixel háttér színe - vagyis fekete.
  • A programozó nem tartalmazza megőrizve az alfa csatorna a kimeneti fájlban. Felelős ez a funkció imagesavealpha

Nos, az okok ismertek. Most a megvalósítása a jobb átméretezni PNG kép:

Lásd még:

  • Proxy-cache és a képek átméretezése a nginx

Proxyzásnál, átméretezés, caching képek segítségével nginx. Szervezése közbenső képszerverre. Minimalizálása hívások távoli SERVERK átméretezéséhez a korábban cache kép nagyobb.

Van egy távoli szolgáltatás (a továbbiakban: images.service.com), hasonló funkcionalitást a termék katalógus. Ő az API, amelyen keresztül tudok.

  • Például, működnek captcha

    Egy példa a sikeres CAPTCHA elismerése. Algoritmusok elválasztani a szöveget háttérben. Izolálása szöveges részének a képen. A program felismeri a képen látható szöveget.

    Üdvözlünk! Ez a cikk fog beszélni több módszer captcha védelem elismerést. Ezek a technikák mutatom kísérleti.

  • Tervezze ... És van rá szükség?

    Tervezési hiba vezetett a újraírása a projekt a semmiből. Hogyan kell helyesen tervezési alkalmazások.

    Ez a téma nem tartalmaz gyakorlati információkat. Itt van az én gondolataimat a helyes megközelítés, hogy minden építészeti tervezés.

  • Hogyan működik az IPv6 PHP

    Éppen ezért, hogy egy keretet és könyvtárak. Egy pár parancs, amit tehetünk, mind ugyanaz, anélkül, hogy gondolkodás, mi van benne.

    Talán igen, ez a legjobb módja ...

    Bár, ha van egy hátránya. Mikor kell valamit jól csinálni, csak a dobozon kívül - meg kell, hogy menjen be a legalacsonyabb a nyelvi szintet, és nem ott. Például, az egyik alkalommal, amikor általában nem írja a sql, lekéstem a vasúti ActiveRecord. És akkor szükséges, hogy optimalizálja a sebességet lekérdezések párok, és itt kezdődött. Néhány, már majdnem egy szakértő ebben)

    Köszönöm, nagyon jó hallani =)

    $ Transparent_color = imagecolorsforindex ($ source_resource $ transparent_source_index.);

    // színt a palettán az új képet, és állítsa be egy átlátszó

    $ Transparent_destination_index = ImageColorAllocate ($ destination_resource $ transparent_color [ 'red'] $ transparent_color [ 'zöld'] $ transparent_color [ 'blue'] ...);

    ImageColorTransparent ($ destination_resource $ transparent_destination_index.);

    // minden esetben töltse ki a háttérben ezt a színt

    imagefill ($ destination_resource 0. 0. $ transparent_destination.);

    Ahol a „Csak abban az esetben, azt írja a háttérben ez a szín” színes változó $ transparent_destination nem létezik
    van szükség: $ transparent_destination_index

    Ha jól értem, akkor a szkript átméretezni SIFCO nem vonatkozik animáció?

    Attól félek, nem. Még nem kellett foglalkozni átméretezés animált gifok.

    Ahhhh! pasibo nagy!
    Minden egyszerű és egyértelmű! Szeretem, ha ez így van, csakúgy, mint a bábuk))))

    Ez nem működik. De csökkenti a háttér fekete!

    imagealphablending ($ képet hamis.);

    imagesavealpha ($ képet igaz.);

    $ PngWaterMarkImg = @ ImageCreateFromPng ($ _SERVER [ "DOCUMENT_ROOT"] $ arWaterMark [ "path_to_watermark"].);

    És Denver minden rendben van, de a tárhely akar. Azonnali, hogy valami függ a szerver beállításokat? Talán php verzió, vagy gd? Köszönöm.

    Attól félek, hogy nem tudom az okokat, ezt a viselkedést. Annak ellenére, hogy én nem különösebben emlékszem a pontos képekkel dolgozik a php. Ezért félek akkor meg kell keresni a probléma okát (
    PS: hogyan válasszuk ki - itt iratkozhat le)

    És én gife, csak az első képkocka után is megmarad ez az átalakulás.
    Így kell lennie?

    Nem. Animált SIFCO kell kezelni egy kicsit másképp. A Google mintegy átméretezése animált gifok. Találkoztam egy ilyen probléma nem, nem tud segíteni.

    Köszönöm. Sok már felvette.