[PHP] Meng gradient met image als alpha-kanaal in PNG

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • masser120
  • Registratie: Januari 2004
  • Laatst online: 20-09 13:02
Beste mensen,

Ik kom er op een of andere manier niet uit. Zoals menigeen weet ondersteunt PNG 24-bits images met 8-bits alpha. Ik ben er van bewust dat 8-bits alpha niet wordt ondersteund door Internet Explorer.

Ik probeer dus voor een fotowebsite een soort weerspiegeling in de grond te maken. Dit wil ik bereiken door een apart plaatje aan te maken door het oude plaatje verticaal te spiegelen en er een gradient als alpha kanaal wil inplakken.
Het is me gelukt het plaatje verticaal te spiegelen in variabele $imagenew, en het is me ook gelukt een zwart-naar-wit gradient of verloop te maken als variabele $gradient.
Het volgende wil me maar niet lukken: ik wil dat $gradient het alpha kanaal wordt van $imagenew en dat dan weergeven.

Op één of andere manier wil dat niet lukken: imagealphablend werkt alleen als je twee verschillende bestanden, waar al een alpha kanaal in zit, wilt mengen. Imagesavealpha werkt ook niet. Ik heb al een groot deel van het internet afgestroopt maar het lukt niet. Het zal vast wel weer eens een keer iets zijn wat ik over het hoofd zie.

Bij voorbaat dank! _/-\o_

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Kun je niet gewoon de foto spiegelen en alvast kopïeren, en daarna de alphawaarden van de pixels van de weerspiegeling pas setten? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 14:39

Johnny

ondergewaardeerde internetguru

Internet Explorer ondersteunt wel transparantie vanaf versie 6 doormiddel van een ActiveX-filter, en in IE7 werkt het standaard.

Je kan met die ActiveX-filters ook afbeeldingen roteren en blenden, volgens mij is het zelfs mogelijk om te doen wat jij wil hier mee, alleen werkt deze oplossing dan niet in andere browsers.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Johnny schreef op dinsdag 14 november 2006 @ 14:12:
Internet Explorer ondersteunt wel transparantie vanaf versie 6 doormiddel van een ActiveX-filter, en in IE7 werkt het standaard.
IIRC doet IE7 gewoon die filter toepassen op jouw gestylde element. ;) (maw: niet native, en ook niet 'standaard'.)

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • masser120
  • Registratie: Januari 2004
  • Laatst online: 20-09 13:02
-NMe- schreef op dinsdag 14 november 2006 @ 14:04:
Kun je niet gewoon de foto spiegelen en alvast kopïeren, en daarna de alphawaarden van de pixels van de weerspiegeling pas setten? :)
Ik zou zoveel mogelijk automatisch willen laten doen, zodat alles zo min mogelijk ruimte wegneemt op de server. Dus ik heb nu PHP zelf de image laten spiegelen en een verloop gemaakt. Nu wil ik nog dat de verloop (gradient) het alphakanaal wordt van het resulterende PHP bestand, en dat lukt me nou niet...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je kan toch gewoon de afbeelding spiegelen en in dat spiegelbeeld met imagecolorallocatealpha pixel voor pixel elke pixel de goeie kleur (dezelfde die er al stond) en alphawaarde geven? Ik heb geen idee hoe performant het is, maar het zou wel werken, lijkt me? ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • masser120
  • Registratie: Januari 2004
  • Laatst online: 20-09 13:02
-NMe- schreef op dinsdag 14 november 2006 @ 14:48:
Je kan toch gewoon de afbeelding spiegelen en in dat spiegelbeeld met imagecolorallocatealpha pixel voor pixel elke pixel de goeie kleur (dezelfde die er al stond) en alphawaarde geven? Ik heb geen idee hoe performant het is, maar het zou wel werken, lijkt me? ;)
Als ik dat bergijp moet ik dat dus dat 256 keer doen (elke grijswaarde één keer)... :+ Is niet echt het meest praktische maar goed... :P

Acties:
  • 0 Henk 'm!

  • masser120
  • Registratie: Januari 2004
  • Laatst online: 20-09 13:02
Niemand een beter initiatief?

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

Waarom leg je niet die gradient erover heen in je browser? Voor IE kan je dan gewoon je plaatje laten laden met een filter, voor 1 plaatje (dat gewoon in een img tag mag) is dat geen drama toch :?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

masser120 schreef op dinsdag 14 november 2006 @ 15:01:
[...]


Als ik dat bergijp moet ik dat dus dat 256 keer doen (elke grijswaarde één keer)... :+ Is niet echt het meest praktische maar goed... :P
Volgens mij zou dat best een reële oplossing zijn hoor. :P Verder gaat het niet om grijswaarden maar waarden in het alpha-kanaal, maar ik neem aan dat je dat weet. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • masser120
  • Registratie: Januari 2004
  • Laatst online: 20-09 13:02
-NMe- schreef op donderdag 16 november 2006 @ 00:51:
[...]

Volgens mij zou dat best een reële oplossing zijn hoor. :P Verder gaat het niet om grijswaarden maar waarden in het alpha-kanaal, maar ik neem aan dat je dat weet. :P
Jammergenoeg werkt dit niet. Ik zie nu dat je met dat imagecolorallocatealpha een bepaalde kleurwaarde aan een variabele toewijst, die je kan gebruiken met het creëren van vectorplaatjes, zoals driehoeken.
Pagina: 1