[PHP/GD] image1 + image2 = outputimage.. hoe?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05 19:09

cappie

all lowercase

Topicstarter
Is het mogenlijk om met GDlib en de image functies in PHP om 2 images te mixen?

Ik wil bijvoorbeeld zoiets doen als dit:

Afbeeldingslocatie: http://quickzone.cx/~cappie/imagemix.jpg

Weet iemand of dit soort dingen mogenlijk zijn? (het gaat me vooral om de multiply van de color value's en 't meenemen van de transparancy value van de png's daarin)

Het zal wel niet, maargoed, "nooit geschoten..."

Aspire to inspire before we expire | profiel | systeem


Acties:
  • 0 Henk 'm!

  • dajappie
  • Registratie: Januari 2005
  • Laatst online: 21-09 20:47
Al eens gekeken onder http://www.php.net/gd bij de GD-functies voor Copy en Merge?

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 09:36
Volgens mij heb je de functie imagecopymerge() nodig. Met true color plaatjes kan deze functie in elk geval omgaan met alphatransparency. Wat je bedoelt met de multiply van color-values volg ik niet helemaal.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

imagecopymerge doet denk ik niet helemaal wat topicstarter wil. Ik ben zelf niet bekend met een functie die een multiply kan maken van het ene plaatje in een ander, zoals Photoshop dat kan, en voor zover ik het weet, kan dat dus ook niet met imagecopymerge. :)

'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!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 08:40
Kijk eens wat imagemagick voor je kan doen: http://www.imagemagick.com/www/command-line-options.html (even zoeken op multiply) (moet dat natuurlijk wel op de server geïnstalleerd staan/worden).

Acties:
  • 0 Henk 'm!

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05 19:09

cappie

all lowercase

Topicstarter
-NMe- schreef op maandag 04 april 2005 @ 14:55:
imagecopymerge doet denk ik niet helemaal wat topicstarter wil. Ik ben zelf niet bekend met een functie die een multiply kan maken van het ene plaatje in een ander, zoals Photoshop dat kan, en voor zover ik het weet, kan dat dus ook niet met imagecopymerge. :)
Als ik de data zelf kan uitlezen naar een array, dan bouw ik d'r zelf wel een hack omheen die de value's met elkaar multiplied.. (nahja, eigenlijk wil ik een color-dodge, maar da's gewoon een andere vorm van bewerking ;))

Aspire to inspire before we expire | profiel | systeem


Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 08:40
cappie schreef op maandag 04 april 2005 @ 15:13:
Als ik de data zelf kan uitlezen naar een array, dan bouw ik d'r zelf wel een hack omheen die de value's met elkaar multiplied.. (nahja, eigenlijk wil ik een color-dodge, maar da's gewoon een andere vorm van bewerking ;))
Je kan met GDLib de afbeelding pixel voor pixel uitlezen, dus leef je uit :)

Acties:
  • 0 Henk 'm!

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05 19:09

cappie

all lowercase

Topicstarter
sjroorda schreef op maandag 04 april 2005 @ 15:00:
Kijk eens wat imagemagick voor je kan doen: http://www.imagemagick.com/www/command-line-options.html (even zoeken op multiply) (moet dat natuurlijk wel op de server geïnstalleerd staan/worden).
Ai! geen externe software aub! ik wil 't met PHP voor elkaar krijgen zodat 't op iedere standaard PHP (met GDlib) installatie werkt.

Toch bedankt voor de suggestie.. ik zal 't zeker bookmarken voor toekomstige projecten.

[ Voor 41% gewijzigd door cappie op 04-04-2005 15:16 ]

Aspire to inspire before we expire | profiel | systeem


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

sjroorda schreef op maandag 04 april 2005 @ 15:14:
Je kan met GDLib de afbeelding pixel voor pixel uitlezen, dus leef je uit :)
Precies, daarvoor heb je imagecolorat() en imagesetpixel(). :)
cappie schreef op maandag 04 april 2005 @ 15:14:
Ai! geen externe software aub! ik wil 't met PHP voor elkaar krijgen zodat 't op iedere (moderne (met GD)) standaard PHP installatie werkt.

Toch bedankt voor de suggestie.. ik zal 't zeker bookmarken voor toekomstige projecten.
ImageMagick is een vrij standaard tool die op het grootste deel van de zichzelf respecterende servers wel aanwezig is. :)

[ Voor 39% gewijzigd door NMe op 04-04-2005 15:17 ]

'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!

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05 19:09

cappie

all lowercase

Topicstarter
Ah.. bot :P

Nou, maar eens flink op m'n keyboard gaan bashen daarmee.. zodra ik resultaat heb, post ik de code hier wel.. thnx so far.

EDIT: ik heb een pagina gevonden waarop zo'n beetje alle formules staan voor de blend modes: http://www.pegtop.net/delphi/blendmodes/

[ Voor 19% gewijzigd door cappie op 04-04-2005 15:20 ]

Aspire to inspire before we expire | profiel | systeem


Acties:
  • 0 Henk 'm!

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05 19:09

cappie

all lowercase

Topicstarter
ok... voorbeeldje code gevonden:
code:
1
2
3
4
5
6
if b = 255 then
  result := 255
else begin
  c := (a SHL 8) DIV (255-b);
  if c > 255 then result := 255 else result := c;
end;


dat is dus:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function blendPixelByte($input_a, $input_b) {
  if ($input_b = 255) {
    $output = 255;
  } else {
    // doe een shift-left over $input_a van 8 en deel door 255 minus $input_b
    $temp = ($input_a << 8) / (255 - $input_b)
    if ($temp > 255) {
      $output = 255;
    } else {
      $output = $temp;
    }
  }
  return $output;
}


Als ik me niet vergis...

[ Voor 14% gewijzigd door cappie op 04-04-2005 16:11 ]

Aspire to inspire before we expire | profiel | systeem


Acties:
  • 0 Henk 'm!

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05 19:09

cappie

all lowercase

Topicstarter
-NMe- schreef op maandag 04 april 2005 @ 15:16:
[...]

Precies, daarvoor heb je imagecolorat() en imagesetpixel(). :)

[...]

ImageMagick is een vrij standaard tool die op het grootste deel van de zichzelf respecterende servers wel aanwezig is. :)
Hmm.. ja, ok.. maar ik hou liever alles gewoon binnen PHP zonder afhankelijk te zijn van externe zooi :)

Aspire to inspire before we expire | profiel | systeem


Acties:
  • 0 Henk 'm!

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05 19:09

cappie

all lowercase

Topicstarter
Crap.. ik moet gewoon een multiply en een color dodge bouwen om 't resultaat zo te krijgen als op dat plaatje :)

Maargoed.. 'k ben nu een class aan 't bouwen die alle blendmodes moet bevatten die ook op http://www.pegtop.net/delphi/blendmodes/ staan.. zodra het werkt laat ik wel wat voorbeelden zien...

[ Voor 11% gewijzigd door cappie op 26-05-2005 13:24 ]

Aspire to inspire before we expire | profiel | systeem

Pagina: 1