[PHP / GD] cirkel uit plaatje 1 inserten in plaatje 2

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 19:59

Kaastosti

Vrolijkheid alom!

Topicstarter
Eindelijk begin ik die gd library een beetje onder de knie te krijgen, dus tijd voor een nieuwe uitdaging. Ik heb het in m'n hoofd gehaalt dat het leuk zou zijn als ik een cirkel uit een plaatje kan halen en die kan inserten in een andere image. De reden dat ik dat wil doen, is dat ik met gd geen mooie cirkel kan tekenen van een paar pixels dik die netjes anti-aliased naar de achtergrond.

Dit laatste heb ik dus alvast in Photoshop gedaan. Dat is een png image van alleen die cirkel. Het script wat ik nu heb zorgt er voor dat het plaatje wat er in moet komen netjes resized wordt en in het midden van die cirkel gezet, alleen is dat het gehele plaatje.

Mijn vraag is dan ook of er een manier is om een selectie uit een plaatje te halen in cirkelvorm. Ik kan in ieder geval wel normaal een rectangle tekenen... maar daar heb ik in dit verhaal ook weinig aan :)

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Waarom zou je een ronde selectie eruit willen halen? Als je in Photoshop alles behalve de cirkel transparant maakt, dan kun je die cirkel gewoon over je image heen plakken. PNG ondersteunt transparantie.
[edit]
Sterker nog, ik denk dat je geen keus hebt. Je hebt geen nette grens, anders had je zonder antialiasing toegekund. Je kunt dus ook niet langs een nette grens knippen, en je hebt alpha transparantie nodig. Kan nog steeds met PNG.

[ Voor 37% gewijzigd door MSalters op 04-07-2005 17:04 ]

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Ik zou eerder voor GIF gaan, als dat ondersteund wordt door je GD-versie. Er zijn vaak problemen met PNG's en transparantie in GD. :)

[ Voor 3% gewijzigd door NMe op 04-07-2005 17:05 ]

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

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Ik weet niet hoe groot je plaatjes zijn. Als ze niet te groot zijn zou je het volgende kunnen doen. Eerst maak je je plaatje 2x zo groot. In dit plaatje teken je de cirkel. Tot slot verklein je het plaatje met resample. Dit komt effectief neer op een antialiazing van 2x2.

@NME : Daarmee los je het probleem niet op. GIF heeft alleen opaque of transparant terwijl hier ook enkele tussenliggende gradaties nodig zijn.

[ Voor 22% gewijzigd door Janoz op 04-07-2005 17:20 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 19:59

Kaastosti

Vrolijkheid alom!

Topicstarter
Ik kreeg die gif plaatjes maar niet netjes opgeslagen met transparantie onder Photoshop CS. Op de een of andere manier wordt de transparantie gewoon genegeerd en alles wat ook maar een beetje gekleurd is zwart. Gepruts met pallets hielp daar ook niet.

Zodoende kwam ik op png's uit, welke ook door gd ondersteund worden. De plaatjes die er uit komen zijn ook netjes transparant, alleen is het onder IE even lastiger om png's met transparantie aan de praat te krijgen. Gelukkig kreeg ik van iemand een script wat dat verhelpt. (uit ander topic over imagerotate en transparantie).

Andere opties met het gebruik van meerdere layers en plaatjes die over elkaar heen liggen gaat ook niet werken, aangezien ik de background color van m'n pagina wil kunnen veranderen zonder daarna alle cirkels aan te moeten passen naar de nieuwe kleur. Het enige wat ik dus zou kunnen doen is een cirkel uit zo'n plaatje knippen.. vandaar dit hippe probleem :)

[ Voor 25% gewijzigd door Kaastosti op 04-07-2005 17:34 ]

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Acties:
  • 0 Henk 'm!

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Welke versie van PS gebruik je? Want ik zou gewoon een transparante png maken en met GD gaan werken. En hoe sla je het bestand op? Je zou het eens op kunnen slaan met Save for the web.

Acties:
  • 0 Henk 'm!

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 19:59

Kaastosti

Vrolijkheid alom!

Topicstarter
Want ik zou gewoon een transparante png maken en met GD gaan werken.
Dat doe ik dus ook, ik heb 2 plaatjes. Een transparante image met daarop alleen een ge-anti-aliaste (damn, is dat een woord? :P) cirkel en een foto die ik in die cirkel wil hebben. Het probleem ontstaat dus op het moment dat ik alles wat buiten die cirkel valt niet wil zien.

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Waarom zou je de door mij aangedragen oplossing niet kunnen gebruiken? In principe lost dat het "dat ik met gd geen mooie cirkel kan tekenen van een paar pixels dik die netjes anti-aliased naar de achtergrond" probleem op.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Kaastosti
  • Registratie: Juni 2000
  • Laatst online: 19:59

Kaastosti

Vrolijkheid alom!

Topicstarter
Omdat ik dan alleen een oplossing heb voor een probleem waar ik al langs gewerkt heb :) Het probleem is nu dat ik een plaatje wil hebben van een cirkel waarbij alles buiten de cirkel transparant is (dat is gelukt door er een png van te maken in photoshop), en nu binnen die cirkel een foto weer wil geven.

Het lastige hierbij is dat, door de transparantie buiten de cirkel, de rest van de foto daar gewoon te zien is. Ik wil die buitenkanten niet opvullen met een kleur, omdat ik op m'n pagina de achtergrondkleur wil kunnen veranderen zonder dan meteen alle plaatjes opnieuw te moeten maken.

Een vergissing is menselijk, maar om er echt een puinhoop van te maken heb je een computer nodig.

Pagina: 1