Home pageFind It!Contact PJAPJA documentation


 PJA Toolkit forum

This forum is dedicated to PJA Toolkit.
You may read freely the messages it contents. If you want to write a message or answer to a subject, subscribe to it first.

Subjects Recent messages Login Subscribe

Messages of subject Using Color with PJA in a Headless environment

David N

Location : Australia
Member since : Jun 1, 2006
Messages : 2
 Jun 6, 2006 at 3:16 AM

I wrote a piece of code to generate thumbnails of images using the Java.awt but I found out that I need to run it in a headless environment. I switched to using the getDefaultToolkit() in the PJA package.

image = PJAToolkit.getDefaultToolkit().getImage(sourceFile.getPath());
rather than:
image = Toolkit.getDefaultToolkit().getImage(sourceFile.getPath());
Which works great.

But I need to be able to set the background color for the image in case it is a GIF with transparency. I could do that using Java.awt when I wrote the image:
graphics2D.drawImage(image, 0, 0, newWidth, newHeight, bgcolor, null);
Where bgcolor is a Color object. But Color does not work in a headless environment.

Does anyone have any ideas about what I might be able to do? Is there anything in the PJA Toolkit that might help me?

Thanks in advance for any help,



Location : Paris / France
Member since : Apr 29, 2003
Messages : 394
 Jun 6, 2006 at 6:58 PM
Retrieve a Graphics instance bound to a PJAImage object.
Then, use its fillRect and drawImage methods...

If you use the classes cited in PJA Toolkit FAQ "What methods can be called in a servlet with no problem of Toolkit access for end users ?", your code should look like this :

  // PJAGraphicsManager replaces safely Toolkit in headless environments
  PJAGraphicsManager manager = PJAGraphicsManager.getDefaultGraphicsManager();

  Image image = manager.getImage(sourceFile.getPath());
  // This is the easiest way to load an image synchronously
  // you may also use a standard ImageObserver (see PJA examples)
  // Create an empty image at same size
  Image imageWithBackground =
      manager.createImage(image.getWidth(null), image.getHeight(null));
  // Get its Graphics object
  Graphics g = imageWithBackground.getGraphics();
  // Change current color safely (java.awt.Color needs X11 libs until JDK 1.4 included)
  ((PJAGraphicsExtension)g).setColor (red, green, blue);
  g.fillRect(0, 0, image.getWidth(null), image.getHeight(null));
  g.drawImage(image, 0, 0, null);
  // Do whatever you want with imageWithBackground

Manu (moderator/modérateur)

David N

Location : Australia
Member since : Jun 1, 2006
Messages : 2
 Jun 7, 2006 at 2:28 AM

Thanks for that, mate.
I'll have another play with it and see how it goes.


Home pageFind It!ContactTop

© Copyrights 1997-2023 eTeks - All rights reserved

PJAPJA documentation