Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Java] Graphics2D rotatie en anti-aliasing

Pagina: 1
Acties:

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 13:26

voodooless

Sound is no voodoo!

Topicstarter
Ik heb een simpel Servlet dat een plaatje maakt bestaande uit twee plaatjes die iedere keer @ random een beetje gedraaid zijn. Dit plaatje bestaat uit een frame in de vorm van een oude polaroid rand, en daarin plak ik de echte foto. Dit werkt allemaal prima, alleen onstaan er rond de rand van de echte foto lelijke aliasing effecten:

Afbeeldingslocatie: http://voodooless.com:8080/yakima/images/portea.png?Portea
Als je toevallig een recht plaatje voor je hebt, refresh de pagina nog maar een keer

Ik ben dus op zoek naar een manier om hier vanaf te komen (indien überhaupt mogelijk). Het draaien doe ik met een AffineTransform:

Java:
1
newXform.rotate(angle * Math.PI / 180.0,newimage.getWidth()/2,newimage.getHeight()/2);


Ik heb ook al een berg renderinghits geprobeert in te stellen, maar dat haalt niet veel uit:

Java:
1
2
3
4
5
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
       g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BICUBIC);
       g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING ,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
       g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS ,RenderingHints.VALUE_FRACTIONALMETRICS_ON);
       g2.setRenderingHint(RenderingHints.KEY_RENDERING,RenderingHints.VALUE_RENDER_QUALITY);


Misschien weten jullie wel hoe ik van dit probleem afkom, want ik vind het gewoon lelijk zo :'(

[ Voor 3% gewijzigd door voodooless op 09-01-2008 14:57 ]

Do diamonds shine on the dark side of the moon :?


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20-11 23:37

TeeDee

CQB 241

offtopic:
Ik dacht dat RenderingHints alleen voor Text opging...

Kan je het niet andersom doen? Dus de foto onder de "polaroid" plaatsen?
Je zou ook nog even naar setComposite kunnen kijken (of er mee spelen natuurlijk)

Edit: Voorbeeldje gevonden: http://java.sun.com/maile...corejava/2006/tt0923.html

[ Voor 40% gewijzigd door TeeDee op 09-01-2008 15:09 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 13:26

voodooless

Sound is no voodoo!

Topicstarter
De foto onder de polariod lost niets op, want dat krijg je de lelijke randen van de binnenkant van de polariod ;)

AlphaComposite stuff kan ik eens naar kijken, maar ik vrees dat dat in mijn geval niet gaat werken. Zie comment line uit je linkje:

Java:
1
2
3
4
// Render our clip shape into the image.  Note that we enable
// antialiasing to achieve the soft clipping effect.  Try
// commenting out the line that enables antialiasing, and
// you will see that you end up with the usual hard clipping.


Aangezien antialiasing nu al niets uitvoert gaat dat ook niet helpen met softcliping ben ik bang.

Do diamonds shine on the dark side of the moon :?


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20-11 23:37

TeeDee

CQB 241

Hmm, ik zag na 1 van de eerste keren (ja, ik ben die F5-ende idioot) wel een goede aliasing. Dacht dat je aan het rommelen was met de setComposite.

Misschien anders: waarom niet eerst je afbeelding op 0 graden plaatsen en dan pas de hele meuk roteren.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 13:26

voodooless

Sound is no voodoo!

Topicstarter
TeeDee schreef op woensdag 09 januari 2008 @ 15:20:
Misschien anders: waarom niet eerst je afbeelding op 0 graden plaatsen en dan pas de hele meuk roteren.
Dat is precies wat ik doe ;) Of eigenlijk teken ik gewoon alsof het recht is, en de AffineTransform zorgt voor de rest :)

[ Voor 15% gewijzigd door voodooless op 09-01-2008 15:23 ]

Do diamonds shine on the dark side of the moon :?


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 20-11 23:37

TeeDee

CQB 241

RenderingHints is voorzover ik na kan vinden alleen voor Text. Maar.... als ik een ander artikel (bijna onderaan) lees is de setComposite in combinatie met RenderingHints geschikt voor Softclipping.
voodooless schreef op woensdag 09 januari 2008 @ 15:21:
[...]


Dat is precies wat ik doe ;) Of eigenlijk teken ik gewoon alsof het recht is, en de AffineTransform zorgt voor de rest :)
My bad indeed.

[ Voor 32% gewijzigd door TeeDee op 09-01-2008 15:25 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 13:26

voodooless

Sound is no voodoo!

Topicstarter
'T probleem is dat de aliasing effect van de roteer translatie komt, en dat heeft dus niet zoveel met softclipping te maken. Ik heb hier nog wat gevonden: http://weblogs.java.net/b...03/java_2d_tricker_1.html . Eens kijken of dat wel is wat ik zoek.

Edit: En inderdaad, zoals je nu ziet is het gefixed door gebruik te maken van TexturePaint en fillRect :) Fantastisch!

Edit2: ware het niet dat ik nu een offset probleem heb ;) Maar dat is ook wel op te lossen natuurlijk :)

Edit3: En nu is het wel Fantastisch! :+

[ Voor 34% gewijzigd door voodooless op 09-01-2008 15:53 ]

Do diamonds shine on the dark side of the moon :?

Pagina: 1