Mixing images and shapes

Hey all,
I have a bunch of objects that I want to paint on the screen and at the moment they all contain images so I paint them with g.drawImage. There may be a time however when it won't make sense to have an image. Like if I just need a green rectangle it might be better to have an actual green rectangle instead of trying to find an image of one. Since as far as I can tell there is no default draw method I imagine I'm stuck with drawImage. I'd rather not have an if statement to check for different types of shapes that I might want to draw. Is there a way to do what I'm trying to do (assuming I'm explaining what I'm trying to do well enough).
I thought maybe of maybe overriding the Graphics class and having a default draw method that can take anything and draw it but I'd imagine it would need to be able to convert shapes to images but I'm not really sure what the connection is between an Oval shape and just drawing an Oval with coordinates.
If I'm not doing a great job of explaining this, let me know and I'll try again. I guess I'm not really sure what it is I'm trying to do.

For the fun of it, and while Darryl was posting his reply, I hacked an example (from pieces of code that I already used in another project) where I defined an interface Renderable with a render(Graphics2D) method (more or less as Darryl suggested).
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.MultipleGradientPaint;
import java.awt.RadialGradientPaint;
import java.awt.Rectangle;
import java.awt.geom.Arc2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class RenderableTest {
    public static class Oval implements Renderable {
     private final Ellipse2D ellipse;
     private final Color color;
     public Oval(Color color, double width, double height) {
         this.color = color;
         ellipse = new Ellipse2D.Double(0, 0, width, height);
     @Override
     public double getHeight() {
         return ellipse.getHeight();
     @Override
     public double getWidth() {
         return ellipse.getWidth();
     @Override
     public void render(Graphics2D g2, double x, double y) {
         g2.setColor(color);
         ellipse.setFrame(x, y, ellipse.getWidth(), ellipse.getHeight());
         g2.fill(ellipse);
    public interface Renderable {
     public abstract double getHeight();
     public abstract double getWidth();
     public abstract void render(Graphics2D g2, double x, double y);
    public static class Smiley implements Renderable {
     private final BufferedImage image;
     public Smiley(int size, double smile) {
         if (smile < -1 || smile > 1) {
          throw new IllegalArgumentException(
               "Smile must be between -1 and +1");
         image = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB);
         Graphics2D g = image.createGraphics();
         g.setRenderingHints(QualityHints.getHints());
         g.scale(size / 16.0, size / 16.0);
         paint(g, smile);
         g.dispose();
     @Override
     public double getHeight() {
         return image.getHeight();
     @Override
     public double getWidth() {
         return image.getWidth();
     @Override
     public void render(Graphics2D g2, double x, double y) {
         g2.drawImage(image, null, (int) Math.round(x), (int) Math.round(y));
     private void createPaint(Graphics2D g, Color middle) {
         g.setPaint(new RadialGradientPaint(8f, 8f, 7f, 5f, 3.2f,
              new float[] { 0f, 0.4f, 1f }, new Color[] { Color.WHITE,
                   middle, middle.darker() },
              MultipleGradientPaint.CycleMethod.NO_CYCLE));
     private void paint(Graphics2D g, double smile) {
         g.setStroke(new BasicStroke(1f,
              BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
         createPaint(g, Color.YELLOW.brighter());
         Ellipse2D.Double head = new Ellipse2D.Double(1, 1, 14, 14);
         g.fill(head);
         double boxHeight = 6;
         double smileHeight = boxHeight * Math.abs(smile);
         double smileY = 9.5 - (smile > 0 ? smileHeight / 2 : 0);
         Arc2D mouth = new Arc2D.Double(4, smileY, 8, smileHeight,
              smile <= 0 ? -5.0 : 175.0, 190.0, smile == -1
                   || smile == +1 ? Arc2D.CHORD : Arc2D.OPEN);
         if (smile == -1 || smile == +1) {
          createPaint(g, new Color(230, 230, 230));
          g.fill(mouth);
         createPaint(g, Color.BLACK);
         g.draw(mouth);
         g.draw(head);
         Ellipse2D.Double leftEye = new Ellipse2D.Double(4.3, 5.3, 2, 2);
         Ellipse2D.Double rightEye = new Ellipse2D.Double(9.7, 5.3, 2, 2);
         g.fill(leftEye);
         g.fill(rightEye);
    public static class Square implements Renderable {
     private final Rectangle2D rect;
     private final Color color;
     public Square(Color color, int size) {
         this.color = color;
         this.rect = new Rectangle2D.Double(0, 0, size, size);
     @Override
     public double getHeight() {
         return rect.getHeight();
     @Override
     public double getWidth() {
         return rect.getWidth();
     @Override
     public void render(Graphics2D g2, double x, double y) {
         g2.setColor(color);
         rect.setFrame(x, y, rect.getWidth(), rect.getHeight());
         g2.fill(rect);
    public static void main(String[] args) {
     SwingUtilities.invokeLater(new Runnable() {
         @Override
         public void run() {
          new RenderableTest().createGUI();
    private void createGUI() {
     JFrame frame = new JFrame("Test");
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     frame.add(new JComponent() {
         private static final long serialVersionUID = 1L;
         private Renderable[] renderables = { new Oval(Color.CYAN, 64, 40),
              new Square(Color.MAGENTA, 64), new Smiley(64, -1),
              new Smiley(64, -.5), new Smiley(64, 0), new Smiley(64, .5),
              new Smiley(64, 1), };
         @Override
         public Dimension getPreferredSize() {
          double width = 0;
          double height = 0;
          for (Renderable renderable : renderables) {
              width += renderable.getWidth();
              height = Math.max(height, renderable.getHeight());
          Insets insets = this.getInsets();
          width = width + insets.left + insets.right;
          height = height + insets.top + insets.bottom;
          Dimension size = new Dimension();
          size.setSize(width, height);
          return size;
         @Override
         protected void paintComponent(Graphics g) {
          Rectangle innerArea = new Rectangle();
          SwingUtilities.calculateInnerArea(this, innerArea);
          g.translate(innerArea.x, innerArea.y);
          double x = 0, y = 0;
          for (Renderable renderable : renderables) {
              renderable.render((Graphics2D) g.create(), x, y);
              x += renderable.getWidth();
     frame.pack();
     frame.setLocationRelativeTo(null);
     frame.setVisible(true);
}Piet

Similar Messages

  • Rotating Images and shapes indesign, pixelated?

    Hello,
    I am currently working on a magazine from scratch, and i am having this trouble of pixelated images and shapes, when i rotate them.
    I sat the file on a high quality display, and exported it to PDF... images and shapes still look like shattered....
    Please advise, i need to fix this issue
    Thanks

    1st picture : exported pdf
    2nd picture: indesign file
    3rd picture: PDF Settings
    i am using an acrobat X pro and im using settings such as JPEG 2000 losless / res 300 ppi / JPEG QUALITY HIGH ( check 3rd image )

  • Overlay Images and Shapes on the same canvas

    The example copde below was taken from: http://math.hws.edu/eck/cs124/javanotes3/source/
    Is it possible to update the code so that images (jpg,gif) can be added as well as shapes?
    Any help with this is much appreciated.
        The ShapeDraw applet lets the user add small colored shapes to
        a drawing area and then drag them around.  The shapes are rectangles,
        ovals, and roundrects.  The user adds a shape to the canvas by
        clicking on a button.  The shape is added at the upper left corner
        of the canvas.  The color of the shape is given by the current
        setting of a pop-up menu.  The user can drag the shapes with the
        mouse.  Ordinarily, the shapes maintain a given back-to-front order.
        However, if the user shift-clicks on a shape, that shape will be
        brought to the front.
        A menu can be popped up on a shape (by right-clicking or performing
        some othe platform-dependent action).  This menu allows the user
        to change the size and color of a shape.  It is also possible to
        delete the shape and to bring it to the front.
        This file defines the applet class plus several other classes used
        by the applet, namely:  ShapeCanvas, Shape, RectShape, OvalShape,
        and RoundRectShape.
        David Eck
        July 28,  1998
    import java.awt.*;
    import java.awt.event.*;
    import java.applet.Applet;
    import java.util.Vector;
    public class ShapeDrawWithMenu extends Applet {
       public void init() { 
            // Set up the applet's GUI.  It consists of a canvas, or drawing area,
            // plus a row of controls below the canvas.  The controls include three
            // buttons which are used to add shapes to the canvas and a Choice menu
            // that is used to select the color used for a shape when it is created.
            // The canvas is set as the "listener" for these controls so that it can
            // respond to the user's actions.  (The pop-up menu is created by the canvas.)
          setBackground(Color.lightGray);
          ShapeCanvas canvas = new ShapeCanvas();  // create the canvas
          Choice colorChoice = new Choice();  // color choice menu
          colorChoice.add("Red");
          colorChoice.add("Green");
          colorChoice.add("Blue");
          colorChoice.add("Cyan");
          colorChoice.add("Magenta");
          colorChoice.add("Yellow");
          colorChoice.add("Black");
          colorChoice.add("White");
          colorChoice.addItemListener(canvas);
          Button rectButton = new Button("Rect");    // buttons for adding shapes
          rectButton.addActionListener(canvas);
          Button ovalButton = new Button("Oval");
          ovalButton.addActionListener(canvas);
          Button roundRectButton = new Button("RoundRect");
          roundRectButton.addActionListener(canvas);
          Panel bottom = new Panel();   // a Panel to hold the control buttons
          bottom.setLayout(new GridLayout(1,4,3,3));
          bottom.add(rectButton);
          bottom.add(ovalButton);
          bottom.add(roundRectButton);
          bottom.add(colorChoice);
          setLayout(new BorderLayout(3,3));
          add("Center",canvas);              // add canvas and controls to the applet
          add("South",bottom);
       public Insets getInsets() {
            // Says how much space to leave between the edges of the applet and the
            // components in the applet.
          return new Insets(3,3,3,3);
    }  // end class ShapeDraw
    class ShapeCanvas extends Canvas implements ActionListener, ItemListener,
                                                MouseListener, MouseMotionListener {
          // This class represents a canvas that can display colored shapes and
          // let the user drag them around.  It uses an off-screen images to
          // make the dragging look as smooth as possible.  A pop-up menu is
          // added to the canvas that can be used to performa certain actions
          // on the shapes;
       Image offScreenCanvas = null;   // off-screen image used for double buffering
       Graphics offScreenGraphics;     // graphics context for drawing to offScreenCanvas
       Vector shapes = new Vector();   // holds a list of the shapes that are displayed on the canvas
       Color currentColor = Color.red; // current color; when a shape is created, this is its color
       ShapeCanvas() {
            // Constructor: set background color to white, set up listeners to respond to mouse actions,
            //              and set up the pop-up menu
          setBackground(Color.white);
          addMouseListener(this);
          addMouseMotionListener(this);
          popup = new PopupMenu();
          popup.add("Red");
          popup.add("Green");
          popup.add("Blue");
          popup.add("Cyan");
          popup.add("Magenta");
          popup.add("Yellow");
          popup.add("Black");
          popup.add("White");
          popup.addSeparator();
          popup.add("Big");
          popup.add("Medium");
          popup.add("Small");
          popup.addSeparator();
          popup.add("Delete");
          popup.add("Bring To Front");
          add(popup);
          popup.addActionListener(this);
       } // end construtor
       synchronized public void paint(Graphics g) {
            // In the paint method, everything is drawn to an off-screen canvas, and then
            // that canvas is copied onto the screen.
          makeOffScreenCanvas();
          g.drawImage(offScreenCanvas,0,0,this);
       public void update(Graphics g) {
            // Update method is called when canvas is to be redrawn.
            // Just call the paint method.
          paint(g);
       void makeOffScreenCanvas() {
             // Erase the off-screen canvas and redraw all the shapes in the list.
             // (First, if canvas has not yet been created, then create it.)
          if (offScreenCanvas == null) {
             offScreenCanvas = createImage(getSize().width,getSize().height);
             offScreenGraphics = offScreenCanvas.getGraphics();
          offScreenGraphics.setColor(getBackground());
          offScreenGraphics.fillRect(0,0,getSize().width,getSize().height);
          int top = shapes.size();
          for (int i = 0; i < top; i++) {
             Shape s = (Shape)shapes.elementAt(i);
             s.draw(offScreenGraphics);
       public void itemStateChanged(ItemEvent evt) {
              // This is called to respond to item events.  Such events
              // can only be sent by the color choice menu,
              // so respond by setting the current color according to
              // the selected item in that menu.
          Choice colorChoice = (Choice)evt.getItemSelectable();
          switch (colorChoice.getSelectedIndex()) {
             case 0: currentColor = Color.red;     break;
             case 1: currentColor = Color.green;   break;
             case 2: currentColor = Color.blue;    break;
             case 3: currentColor = Color.cyan;    break;
             case 4: currentColor = Color.magenta; break;
             case 5: currentColor = Color.yellow;  break;
             case 6: currentColor = Color.black;   break;
             case 7: currentColor = Color.white;   break;
       public void actionPerformed(ActionEvent evt) {
              // Called to respond to action events.  The three shape-adding
              // buttons have been set up to send action events to this canvas.
              // Respond by adding the appropriate shape to the canvas.  This
              // also be a command from a pop-up menu.
          String command = evt.getActionCommand();
          if (command.equals("Rect"))
             addShape(new RectShape());
          else if (command.equals("Oval"))
             addShape(new OvalShape());
          else if (command.equals("RoundRect"))
             addShape(new RoundRectShape());
          else
             doPopupMenuCommand(command);
       synchronized void addShape(Shape shape) {
              // Add the shape to the canvas, and set its size/position and color.
              // The shape is added at the top-left corner, with size 50-by-30.
              // Then redraw the canvas to show the newly added shape.
          shape.setColor(currentColor);
          shape.reshape(3,3,50,30);
          shapes.addElement(shape);
          repaint();
       // ------------ This rest of the class implements dragging and the pop-up menu ---------------------
       PopupMenu popup;
       Shape selectedShape = null;     // This is null unless a menu has been popped up on this shape.
       Shape draggedShape = null;      // This is null unless a shape has been selected for dragging.
       int prevDragX;  // During dragging, these record the x and y coordinates of the
       int prevDragY;  //    previous position of the mouse.
       Shape clickedShape(int x, int y) {
             // Find the frontmost shape at coordinates (x,y); return null if there is none.
          for ( int i = shapes.size() - 1; i >= 0; i-- ) {  // check shapes from front to back
             Shape s = (Shape)shapes.elementAt(i);
             if (s.containsPoint(x,y))
                return s;
          return null;
       void doPopupMenuCommand(String command) {
             // Handle a command from the pop-up menu.
          if (selectedShape == null)  // should be impossible
             return;
          if (command.equals("Red"))
             selectedShape.setColor(Color.red);
          else if (command.equals("Green"))
             selectedShape.setColor(Color.green);
          else if (command.equals("Blue"))
             selectedShape.setColor(Color.blue);
          else if (command.equals("Cyan"))
             selectedShape.setColor(Color.cyan);
          else if (command.equals("Magenta"))
             selectedShape.setColor(Color.magenta);
          else if (command.equals("Yellow"))
             selectedShape.setColor(Color.yellow);
          else if (command.equals("Black"))
             selectedShape.setColor(Color.black);
          else if (command.equals("White"))
             selectedShape.setColor(Color.white);
          else if (command.equals("Big"))
             selectedShape.resize(75,45);
          else if (command.equals("Medium"))
             selectedShape.resize(50,30);
          else if (command.equals("Small"))
             selectedShape.resize(25,15);
          else if (command.equals("Delete"))
             shapes.removeElement(selectedShape);
          else if (command.equals("Bring To Front")) {
             shapes.removeElement(selectedShape);
             shapes.addElement(selectedShape);
          repaint();
       synchronized public void mousePressed(MouseEvent evt) {
             // User has pressed the mouse.  Find the shape that the user has clicked on, if
             // any.  If there is a shape at the position when the mouse was clicked, then
             // start dragging it.  If the user was holding down the shift key, then bring
             // the dragged shape to the front, in front of all the other shapes.
          int x = evt.getX();  // x-coordinate of point where mouse was clicked
          int y = evt.getY();  // y-coordinate of point
          if (evt.isPopupTrigger()) {            // If this is a pop-up menu event that
             selectedShape = clickedShape(x,y);  // occurred over a shape, record which shape
             if (selectedShape != null)          // it is and show the menu.
                popup.show(this,x,y);
          else {
             draggedShape = clickedShape(x,y);
             if (draggedShape != null) {
                prevDragX = x;
                prevDragY = y;
                if (evt.isShiftDown()) {                 // Bring the shape to the front by moving it to
                   shapes.removeElement(draggedShape);  //       the end of the list of shapes.
                   shapes.addElement(draggedShape);
                   repaint();  // repaint canvas to show shape in front of other shapes
       synchronized public void mouseDragged(MouseEvent evt) {
              // User has moved the mouse.  Move the dragged shape by the same amount.
          if (draggedShape != null) {
             int x = evt.getX();
             int y = evt.getY();
             draggedShape.moveBy(x - prevDragX, y - prevDragY);
             prevDragX = x;
             prevDragY = y;
             repaint();      // redraw canvas to show shape in new position
       synchronized public void mouseReleased(MouseEvent evt) {
              // User has released the mouse.  Move the dragged shape, then set
              // shapeBeingDragged to null to indicate that dragging is over.
              // If the shape lies completely outside the canvas, remove it
              // from the list of shapes (since there is no way to ever move
              // it back onscreen).
          int x = evt.getX();
          int y = evt.getY();
          if (draggedShape != null) {
             draggedShape.moveBy(x - prevDragX, y - prevDragY);
             if ( draggedShape.left >= getSize().width || draggedShape.top >= getSize().height ||
                     draggedShape.left + draggedShape.width < 0 ||
                     draggedShape.top + draggedShape.height < 0 ) {  // shape is off-screen
                shapes.removeElement(draggedShape);  // remove shape from list of shapes
             draggedShape = null;
             repaint();
          else if (evt.isPopupTrigger()) {        // If this is a pop-up menu event that
             selectedShape = clickedShape(x,y);   // occurred over a shape, record the
             if (selectedShape != null)           // shape and show the menu.
                popup.show(this,x,y);
       public void mouseEntered(MouseEvent evt) { }   // Other methods required for MouseListener and
       public void mouseExited(MouseEvent evt) { }    //              MouseMotionListener interfaces.
       public void mouseMoved(MouseEvent evt) { }
       public void mouseClicked(MouseEvent evt) { }
    }  // end class ShapeCanvas
    abstract class Shape {
          // A class representing shapes that can be displayed on a ShapeCanvas.
          // The subclasses of this class represent particular types of shapes.
          // When a shape is first constucted, it has height and width zero
          // and a default color of white.
       int left, top;      // Position of top left corner of rectangle that bounds this shape.
       int width, height;  // Size of the bounding rectangle.
       Color color = Color.white;  // Color of this shape.
       void reshape(int left, int top, int width, int height) {
             // Set the position and size of this shape.
          this.left = left;
          this.top = top;
          this.width = width;
          this.height = height;
       void resize(int width,int height) {
             // Set the size without changing the position
          this.width = width;
          this.height = height;
       void moveTo(int x, int y) {
              // Move upper left corner to the point (x,y)
          this.left = x;
          this.top = y;
       void moveBy(int dx, int dy) {
              // Move the shape by dx pixels horizontally and dy pixels veritcally
              // (by changing the position of the top-left corner of the shape).
          left += dx;
          top += dy;
       void setColor(Color color) {
              // Set the color of this shape
          this.color = color;
       boolean containsPoint(int x, int y) {
             // Check whether the shape contains the point (x,y).
             // By default, this just checks whether (x,y) is inside the
             // rectangle that bounds the shape.  This method should be
             // overridden by a subclass if the default behaviour is not
             // appropriate for the subclass.
          if (x >= left && x < left+width && y >= top && y < top+height)
             return true;
          else
             return false;
       abstract void draw(Graphics g); 
             // Draw the shape in the graphics context g.
             // This must be overriden in any concrete subclass.
    }  // end of class Shape
    class RectShape extends Shape {
          // This class represents rectangle shapes.
       void draw(Graphics g) {
          g.setColor(color);
          g.fillRect(left,top,width,height);
          g.setColor(Color.black);
          g.drawRect(left,top,width,height);
    class OvalShape extends Shape {
           // This class represents oval shapes.
       void draw(Graphics g) {
          g.setColor(color);
          g.fillOval(left,top,width,height);
          g.setColor(Color.black);
          g.drawOval(left,top,width,height);
       boolean containsPoint(int x, int y) {
             // Check whether (x,y) is inside this oval, using the
             // mathematical equation of an ellipse.
          double rx = width/2.0;   // horizontal radius of ellipse
          double ry = height/2.0;  // vertical radius of ellipse
          double cx = left + rx;   // x-coord of center of ellipse
          double cy = top + ry;    // y-coord of center of ellipse
          if ( (ry*(x-cx))*(ry*(x-cx)) + (rx*(y-cy))*(rx*(y-cy)) <= rx*rx*ry*ry )
             return true;
          else
            return false;
    class RoundRectShape extends Shape {
           // This class represents rectangle shapes with rounded corners.
           // (Note that it uses the inherited version of the
           // containsPoint(x,y) method, even though that is not perfectly
           // accurate when (x,y) is near one of the corners.)
       void draw(Graphics g) {
          g.setColor(color);
          g.fillRoundRect(left,top,width,height,width/3,height/3);
          g.setColor(Color.black);
          g.drawRoundRect(left,top,width,height,width/3,height/3);
    }

    Manveer-Singh
    Please don't post in old threads that are long dead. When you have a question, please start a topic of your own. Feel free to provide a link to an old thread if relevant.
    I'm locking this 3 year old thread now.
    db
    edit You have earlier been advised not to post in old dead threads.
    [http://forums.sun.com/thread.jspa?threadID=354443]
    Continuing to ignore this advice will render your account liable to be blocked.
    Edited by: Darryl.Burke

  • Inserting lines, images and shapes to clips...Needs Help

    I have created a timeline including only pictures. It is a sports clip where i am trying to insert lines depicting the proper position (or improper) for baseball athletes.
    Is it possible to insert lines or shapes onto the clips?
    Is so how?

    Is it possible to insert lines or shapes onto the clips?
    Yes.
    Is so how?
    Place the shapes or lines on the track above the clips (or still images). You can make the shpes or lines in Photoshop (or any graphics program) or in After Effects. There is also a Boris Shape generator that came bundled with FCE (I believe).
    -DH

  • Mail with image and PDF not displaying correctly on Outlook

    Environment and problem
    OS X Mountain Lion, Mail 6.1 (everything up to date)
    Emails with mixed image and PDF attachments send from my MacBoox Pro are not being displayed correctly when received on Outlook. It is not an Outlook problem.
    Multiple inline images - ok
    I compose an email, rich text format, insert severnal inline images, send to colleage on Windows 7 using Outlook, all received ok. He sees the message with inline images.
    Multiple inline images and PDF - not ok
    I compose a similar email with multiple inline images, but attach a PDF. This time all of the attachments (images and PDF) appear at the end of the message when viewed in Outlook.
    Gmail browser comparison
    I repeat the above from a Gmail account via Safari and I can make an email with inline images and PDF attachments and it works.
    Any thoughts, tips, bug reports, etc appreciated.
    Jon

    No - can't be an Apple fan and then critisise MS for being proprietry
    My problem was solved by installing Attachment Tamer.
    It could also have been solved by emailing from Gmail directly.
    The guys I work with use Outlook and were suprised to see this behaviour.
    It's only basic OS X email that has a problem.
    I wholeheartedly agree that the standard for emails are not conducive for rich layout control.
    But - when my email just has images I had no problems. Take for example the email notifications we're getting from this thread - there are images and layout etc and work fine.
    The key feature from Attachment Tamer hints at the problem (and its solution):
    send images embedded in HTML layout and safely mix embedded images with other attachments;

  • Adding images and buttons without a frame appearing

    I would like to add images to some of my pages without having them appear in a frame. I would like to place some transparent gifs on the page to use as buttons for hyperlinks. I would also like to have some photos (with transparent backgrounds that appear on the page and are not surrounded by a picture frame. Any Suggestions

    iWeb seems to default to stroking newly-added images and shapes. Pages (iWeb's close relation) includes a way to change the default appearance, but I can't find anything similar in iWeb. You can, of course, remove the stroke using the Graphic Inspector (just set Stroke to None). Transparency in gifs and photo images is supported. Just drag into iWeb or use Insert > Choose... Again, remove the stroke if this appears.

  • How to auto rotate Images on Full Screen Slideshow if pictures were taken mixed Portrait and Landsca

    In Muse: How to auto rotate Images on Full Screen Slideshow if pictures were taken mixed Portrait and Landscape

    There is no way that Muse would automatically rotate the images. What you can instruct Muse to do is whether you want to show all image content and leave blank space in either direction OR scale the image to fill the frame resulting in some cropping, but filling the otherwise blank space.
    The options are Fit Content Proportionally and Fill Frame Proportionally respectively.
    Cheers,
    Vikas

  • Jdeveloper visual editor do not show images and other component shapes

    I used jdeveloper(10.1.3.3.0) to create an ADF BC application, I create a jsf jsp file and drag and drop components from ADF Faces Core to this file visual editor, but jdeveloper visual editor do not show images and other component shapes.
    Could you tell me how I can fix this problem?
    Thanks,
    Mike

    Actually, I need to make a dummy change to the jsp file and then it will display boxes representing the objects in the visual editor whereas I get an exception in the log:
    javax.servlet.jsp.JspException: Cannot find FacesContext
    This does not talk much to me !
    Thanks

  • How do I multiply an image and animate it in 3d space to create a shape?

    My boss has a small clip he would like me to make. He wants me to take an image (Its just a square image) and have it start in the center of the screen, and as it scales down and moves to one of the bottom corners (I've already got that part done) the image multiplies and creates a seamless circular/oval band in 3D space. He also wants this done with another image, but for this other image (also simply a square) to create a sphere as it multiplies.
      Is there an easier way to do this, or am I going to have to place, manipulate and animate each individual copy of the square image to create a solid band?
    I originally posted this question here: http://forums.adobe.com/thread/1056968
    Because what I am trying to do is similar to what she was able to do with the letters in this thread.
    Any help, tips or pointers anyone could give me would be great.

    Try searching aeEnhancers for a layer distributor script. That will automate the process of distributing layers in a sphere. Use that to set your final position then just work backwards. I don't remember exactly where the script is but I know it's out there.
    Another option would be to create a grid of these images where you animate the layers from the center to their position a grid of flat images. Nest that pre-comp in your main comp and apply CC Sphere.
    You could also write an expression that bases the layer's position relative to the index value of the layer. Duplicate the layer and the position is taken from the layer above and the layer width or height is added to distribute the layers. Base the move on the value over time and the layer's in and out point or layer markers. Now just arrange the layers in the timeline and you have an automated grid.

  • How to mix time lapse with still images and imported movies ?

    Hello
    I have been shooting photos (time lapse with Camera Pro) and movies with a Nokia N8 and would love to use iMovie to mount all that.
    Unfortunately, for the time lapse I cannot get the duration of the photos to 0.03s, it just won't accept it. I have been looking around the forum and could only find sort of solutions when you have a transition or effect on the pictures but not when they are just fit to the screen...
    So now the time lapse looks much slower and broken than the movie itself... and it does not look nice.
    Another way would be to make the time lapse with QT Pro and then import it but I am affraid I am loosing quality in the process.
    Anybody knows how to fix this duration problem ?
    Thank you in advance for any helpful answer.
    Petri
    Mac OS 10.6.8
    iMovie : 9.0.4

    Able, Jim,
    thanks a lot, both solutions work just fine.
    Take the first image, adjust the Effects, copy it, select the other images and past attributes
    and
    just put all images together, make a new sequence and use that first sequence as nested sequence and put the effects on that

  • How to use the Rectangle class to draw an image and center it in a JPanel

    I sent an earlier post on how to center an image in a JPanel using the Rectangle class. I was asked to send an executable code which will show the malfunction. The code below is an executable code and a small part of a very big project. To simplifiy things, it is just a JFrame and a JPanel with an open dialog. Once executed the JFrame and the FileDialog will open. You can then navigate to a .gif or a .jpg picture and open it. What I want is for the picture to be centered in the middle of the JPanel and not the upper left corner. It is also important to stress that, I am usinig the Rectangle class to draw the Image. The region of interest is where the rectangle is created. In the constructor of the CenterRect class, I initialize the Rectangle class. Then I use paintComponent in the CenterRect class to draw the Image. The other classes are just support classes. The MyImage class is an extended image class which also has a draw() method. Any assistance in getting the Rectangle to show at the center of the JPanel without affecting the size and shape of the image will be greatly appreciated.
    I have divided the code into three parts. They are all supposed to be on one file in order to execute.
    import java.awt.*;
    import java.awt.image.*;
    import javax.swing.*;
    public class CenterRect extends JPanel {
        public static Rectangle srcRect;
        Insets insets = null;
        Image image;
        MyImage imp;
        private double magnification;
        private int dstWidth, dstHeight;
        public CenterRect(MyImage imp){
            insets = getInsets();
            this.imp = imp;
            int width = imp.getWidth();
            int height = imp.getHeight();
            ImagePanel.init();
            srcRect = new Rectangle(0,0, width, height);
            srcRect.setLocation(0,0);
            setDrawingSize(width, height);
            magnification = 1.0;
        public void setDrawingSize(int width, int height) {
            dstWidth = width;
            dstHeight = height;
            setSize(dstWidth, dstHeight);
        public void paintComponent(Graphics g) {
            Image img = imp.getImage();
         try {
                if (img!=null)
                    g.drawImage(img,0,0, (int)(srcRect.width*magnification), (int)(srcRect.height*magnification),
              srcRect.x, srcRect.y, srcRect.x+srcRect.width, srcRect.y+srcRect.height, null);
            catch(OutOfMemoryError e) {e.printStackTrace();}
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new Opener().openImage();
    class Opener{
        private String dir;
        private String name;
        private static String defaultDirectory;
        JFrame parent;
        public Opener() {
            initComponents();
         public void initComponents(){
            parent = new JFrame();
            parent.setContentPane(ImagePanel.panel);
            parent.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            parent.setExtendedState(JFrame.MAXIMIZED_BOTH);
            parent.setVisible(true);
        public void openDialog(String title, String path){
            if (path==null || path.equals("")) {
                FileDialog fd = new FileDialog(parent, title);
                defaultDirectory = "dir.image";
                if (defaultDirectory!=null)
                    fd.setDirectory(defaultDirectory);
                fd.setVisible(true);
                name = fd.getFile();
                if (name!=null) {
                    dir = fd.getDirectory();
                    defaultDirectory = dir;
                fd.dispose();
                if (parent==null)
                    return;
            } else {
                int i = path.lastIndexOf('/');
                if (i==-1)
                    i = path.lastIndexOf('\\');
                if (i>0) {
                    dir = path.substring(0, i+1);
                    name = path.substring(i+1);
                } else {
                    dir = "";
                    name = path;
        public MyImage openImage(String directory, String name) {
            MyImage imp = openJpegOrGif(dir, name);
            return imp;
        public void openImage() {
            openDialog("Open...", "");
            String directory = dir;
            String name = this.name;
            if (name==null)
                return;
            MyImage imp = openImage(directory, name);
            if (imp!=null) imp.show();
        MyImage openJpegOrGif(String dir, String name) {
                MyImage imp = null;
                Image img = Toolkit.getDefaultToolkit().getImage(dir+name);
                if (img!=null) {
                    imp = new MyImage(name, img);
                    FileInfo fi = new FileInfo();
                    fi.fileFormat = fi.GIF_OR_JPG;
                    fi.fileName = name;
                    fi.directory = dir;
                    imp.setFileInfo(fi);
                return imp;
    }

    This is the second part. It is a continuation of the first part. They are all supposed to be on one file.
    class MyImage implements ImageObserver{
        private int imageUpdateY, imageUpdateW,width,height;
        private boolean imageLoaded;
        private static int currentID = -1;
        private int ID;
        private static Component comp;
        protected ImageProcessor ip;
        private String title;
        protected Image img;
        private static int xbase = -1;
        private static int ybase,xloc,yloc;
        private static int count = 0;
        private static final int XINC = 8;
        private static final int YINC = 12;
        private int originalScale = 1;
        private FileInfo fileInfo;
        ImagePanel win;
        /** Constructs an ImagePlus from an AWT Image. The first argument
         * will be used as the title of the window that displays the image. */
        public MyImage(String title, Image img) {
            this.title = title;
             ID = --currentID;
            if (img!=null)
                setImage(img);
        public boolean imageUpdate(Image img, int flags, int x, int y, int w, int h) {
             imageUpdateY = y;
             imageUpdateW = w;
             imageLoaded = (flags & (ALLBITS|FRAMEBITS|ABORT)) != 0;
         return !imageLoaded;
        public int getWidth() {
             return width;
        public int getHeight() {
             return height;
        /** Replaces the ImageProcessor, if any, with the one specified.
         * Set 'title' to null to leave the image title unchanged. */
        public void setProcessor(String title, ImageProcessor ip) {
            if (title!=null) this.title = title;
            this.ip = ip;
            img = ip.createImage();
            boolean newSize = width!=ip.getWidth() || height!=ip.getHeight();
         width = ip.getWidth();
         height = ip.getHeight();
         if (win!=null && newSize) {
                win = new ImagePanel(this);
        public void draw(){
            CenterRect ic = null;
            win = new ImagePanel(this);
            if (win!=null){
                win.addIC(this);
                win.getCanvas().repaint();
                ic = win .getCanvas();
                win.panel.add(ic);
                int width = win.imp.getWidth();
                int height = win.imp.getHeight();
                Point ijLoc = new Point(10,32);
                if (xbase==-1) {
                    xbase = 5;
                    ybase = ijLoc.y;
                    xloc = xbase;
                    yloc = ybase;
                if ((xloc+width)>ijLoc.x && yloc<(ybase+20))
                    yloc = ybase+20;
                    int x = xloc;
                    int y = yloc;
                    xloc += XINC;
                    yloc += YINC;
                    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
                    count++;
                    if (count%6==0) {
                        xloc = xbase;
                        yloc = ybase;
                    int scale = 1;
                    while (xbase+XINC*4+width/scale>screen.width || ybase+YINC*4+height/scale>screen.height)
                        if (scale>1) {
                   originalScale = scale;
                   ic.setDrawingSize(width/scale, height/scale);
        /** Returns the current AWT image. */
        public Image getImage() {
            if (img==null && ip!=null)
                img = ip.createImage();
            return img;
        /** Replaces the AWT image, if any, with the one specified. */
        public void setImage(Image img) {
            waitForImage(img);
            this.img = img;
            JPanel panel = ImagePanel.panel;
            width = img.getWidth(panel);
            height = img.getHeight(panel);
            ip = null;
        /** Opens a window to display this image and clears the status bar. */
        public void show() {
            show("");
        /** Opens a window to display this image and displays
         * 'statusMessage' in the status bar. */
        public void show(String statusMessage) {
            if (img==null && ip!=null){
                img = ip.createImage();
            if ((img!=null) && (width>=0) && (height>=0)) {
                win = new ImagePanel(this);
                draw();
        private void waitForImage(Image img) {
        if (comp==null) {
            comp = ImagePanel.panel;
            if (comp==null)
                comp = new JPanel();
        imageLoaded = false;
        if (!comp.prepareImage(img, this)) {
            double progress;
            while (!imageLoaded) {
                if (imageUpdateW>1) {
                    progress = (double)imageUpdateY/imageUpdateW;
                    if (!(progress<1.0)) {
                        progress = 1.0 - (progress-1.0);
                        if (progress<0.0) progress = 0.9;
    public void setFileInfo(FileInfo fi) {
        fi.pixels = null;
        fileInfo = fi;
    }

  • Mixing XDCAM and HDV?? Outputting to SD DVD...

    Hi
    Earlier this year we shot a documentary on a Sony PDW-F350L HD XDCam (great camera, stunning footage - 35Mbps). Working in FCP has been fine.
    We're doing a follow up and budget and logistics dictate that we sadly can't use 350s again (where we're going, carrying 2 Z1s for example is going to be a lot easier). We're also on a fairly steep learning curve (being relatively new to FCP, Compressor etc).
    So I'm looking at options. We know that there are significant differences between say a Z1 and a 350 but from my research so far and from some relatively simple testing mixing Z1 footage (native) and 350 footage on FCP, at least editing on the timeline doesn't seem like it's going to present any problems (although thoughts on that welcome).
    The issue seems to be outputting. In the first instance we'll be outputting to SD DVD. Yes, that old gem...
    Searching round various forums, it seems this problem (HDV - SD) is fairly universal. Solutions seem to range from not working in Native HDV (suggestions vary on the format to ingest in - AIC etc); outputting to different formats first (eg DVCPro HD) and then to MPEG-2; outputting the timeline to tape (DV), re-importing; using some thing like a Matrox MXO to output and others...
    We're aware of the shortcoming of HDV and the compressed nature of the format and our expectations, given our kit are realistic. I've even tried putting some PD150 footage on the timeline but that's just not going to cut it.
    So, I've got to put a kit list together by next week and wondered if anyone had any thoughts on:
    1) Mixing XDCAM and HDV on the timeline and any gotchas we should watch out for.
    but more importantly
    2) Any suggested routes I can look at to get some reasonable output with these two formats on the timeline - particularly HDV (don't think we'll have time to look at the Matrox route right now).
    Many thanks in advance for any thoughts.
    Cheers

    Thanks Andy, Michael
    That's good input. From an editing point of view we seem to be ok. Although, Michael, I take your point and that's a good suggestion.
    The main problem is the workflow to create a decent SD DVD without the artefacts caused by compression/motion etc in HDV (and to some extent XDCAM).
    Have read the prores whitepaper at
    http://images.apple.com/finalcutstudio/resources/whitepapers/L342568A_ProResWP.pdf
    And looked a little more into understanding GOP structures and it seems that ProRes will help in terms of editing.
    The white paper seems to suggest that converting to ProRes, because it uses I frame–only encoding "Ensures consistent quality in every frame and no artifacts from complex motion. "
    We'll try some tests but, does anyone know if this is true?
    But it also seems that deinterlacing may solve some of the horrendous vertical edge rippling we're getting on the HDV footage when outputting to SD DVD - although if I'm honest I'm not sure how we achive that with our current setting.

  • IHow do I know what the bit details are on an image and how to change it?

    I wanted to send some wildlife images to a magazine who required us to send  quality size 10
    saved at 300dpi and then to send a copy of the same images at 72dpi and 8bit NOT 16bit.
    I have no idea what they are requesting so please:-
    1) How do I discover the details of my photograhs ie resolution 300dpi or 72dpi and how do I change it.
    2) How do I discover the bit on images and again how do I change it as requested by the magazine.
    Please please keep it simple as I am getting on a bit  (pardon the pun) and do not understand computers.
    Photoshop Elements 8  seems so complicated
    Thank you for any help.
    Brian Holland

    Hi Barbara,
    Firstly I hope you had a great Christmas and I wish you a happy and healthy
    new year.
    I have been experimenting with colour changes in my Photoshop Elements 8 and
    am encouraged having changed the colour of my car in the image.
    I now would like to know how I change images that are black i.e. a crow in a
    photograph or change the white in a photograph i.e. a swan.
    I have looked at the Adjust Hue and Saturation and then the 'Master' but
    there does not seem to be a facility to change black and white.
    Also confused by Magenta and Cyan what colours do they represent please
    should I ever need to use them?.
    Thank you again for your help.
    Brian.
    PS Have also been experimenting with text and shapes and can now alter the
    colours of each and with text vary the font, colour, and style. Progress for
    an old chap of seventy three.

  • Trying to overlay text onto images and save them.

    What I want: I have a computer running the media in my car and I want to hook up a camera to it that'll record when the computer is running and overlay the GPS speed onto the video for later viewing.
    What I got: I have the following piece of code that saves a series of .jpg images at a specified frame rate and a separate Java application that puts them together into a .mov file to view later. I couldn't find anything to record the straight video so if you have any links for that, please point me. But for now I'll settle for doing it this way and I'm not too concerned with the GPS speed NMEA parsing for now, I'll just use a static speed label until I get the overlaying working.
    What I need: I need to know what to plug into the speedOverlay() method in order to grab the image and put the speed on top of it before saving it and moving to the next image. Any ideas?
    Code:
    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGEncodeParam;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;
    import com.sun.media.sound.Toolkit;
    import javax.imageio.ImageIO;
    import javax.media.*;
    import javax.media.control.FrameGrabbingControl;
    import javax.media.format.VideoFormat;
    import javax.media.util.BufferToImage;
    import javax.swing.JButton;
    import javax.swing.JComponent;
    import javax.swing.JTextField;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.Image;
    import java.awt.Panel;
    import java.awt.Shape;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.awt.font.TextLayout;
    import java.awt.geom.AffineTransform;
    import java.awt.image.BufferedImage;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.Timer;
    import java.util.TimerTask;
    public class SwingCapture1 extends Panel implements Runnable, ActionListener
         private static final long serialVersionUID = 1L;
         public static Player player = null;
         public CaptureDeviceInfo di = null;
         public MediaLocator ml = null;
         public JButton start = new JButton("START");
         public JButton stop = new JButton ("STOP NOW");
         public JLabel frequencyLabel = new JLabel("Frequency:");
         public JTextField frequencyInputField = new JTextField(5);
         public JLabel framerateLabel = new JLabel("Framerate: ");
         public JTextField framerateInputField = new JTextField(5);
         public JLabel timerLabel = new JLabel("Timer: ");
         public JTextField timerInputField = new JTextField(5);
         public JPanel southPanel = new JPanel();
         public static Buffer buf = null;
         public static Image img = null;
         public VideoFormat vf = null;
         public static BufferToImage btoi = null;
         public static ImagePanel imgpanel = null;
         public static Timer timer = new Timer();
         static int theFrameRate = 0;
         static int theTimeLength = 0;
         static int i = 0;
         static int interval = 0;
         int count = 0;
         static int timeLength = 0;
         static String filePrefix = "";
         static String imagesDirectory = "c:\\images\\";
         static boolean timerBoolean = true;
         Thread capThread;
         Toolkit toolkit;
         public SwingCapture1()
              setLayout(new BorderLayout());
    //          setSize(640, 480);
              imgpanel = new ImagePanel();
              start.addActionListener(this);
              final String str = "vfw:Microsoft WDM Image Capture (Win32):0";
              di = CaptureDeviceManager.getDevice(str);
              ml = new MediaLocator(str);
              try
                   player = Manager.createRealizedPlayer(ml);
                   player.start();
                   Component comp;
                   if ((comp = player.getVisualComponent()) != null)
                        add(comp, BorderLayout.LINE_START);
    //               add(capture);
                   add(imgpanel, BorderLayout.LINE_END);
                   add(southPanel, BorderLayout.SOUTH);
                   southPanel.add(framerateLabel);
                   southPanel.add(framerateInputField);
                   southPanel.add(timerLabel);
                   southPanel.add(timerInputField);
                   southPanel.add(start);
                   southPanel.add(stop);
              catch (final Exception e)
                   System.out.println("ERROR 1");
                   e.printStackTrace();
         public static void playerclose()
              player.close();
              player.deallocate();
         public void actionPerformed(final ActionEvent e)
              final JComponent c = (JComponent) e.getSource();
              if (c == start)
    //               snapPicture();
                   theFrameRate = Integer.parseInt(framerateInputField.getText());
                   theTimeLength = Integer.parseInt(timerInputField.getText());
                   startCapture(theFrameRate, theTimeLength);
              if (c == stop)
                   timerBoolean = false;
         public void startCapture(final int framerate, final int timeLength)
              interval = 1000 / framerate;
              // Start timer.
              timer.scheduleAtFixedRate(new TimerTask ()
                   public void run()
                        System.out.println("SNAP");
                        snapPicture();
                        count++;
                        if (count >= timeLength * framerate)
                             this.cancel();
              }, 1000, interval);
         public static void snapPicture()
              final FrameGrabbingControl fgc = (FrameGrabbingControl) player.getControl("javax.media.control.FrameGrabbingControl");
              buf = fgc.grabFrame(); // Convert it to an image
              btoi = new BufferToImage((VideoFormat) buf.getFormat());
              img = btoi.createImage(buf); // show the image
              imgpanel.setImage(img); // save image
              // saveJPG(img, "c:\\java\\Tomcat\\webapps\\loadimage\\main.jpg");
              i++;
              speedOverlay(img);
              saveJPG(img, imagesDirectory + filePrefix + i + ".jpg");
         public static void speedOverlay(Image img)
         public static void saveJPG(final Image img, final String s)
              final BufferedImage bi = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_RGB);
              final Graphics2D g2 = bi.createGraphics();
              g2.drawImage(img, null, null);
              FileOutputStream out = null;
              try
                   out = new FileOutputStream(s);
              catch (final java.io.FileNotFoundException io)
                   System.out.println("ERROR 2");
                   System.out.println("File Not Found");
              final JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);
              final JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(bi);
              param.setQuality(0.5f, false);
              encoder.setJPEGEncodeParam(param);
              try
                   encoder.encode(bi);
                   out.close();
              catch (final java.io.IOException io)
                   System.out.println("ERROR 3");
                   System.out.println("IOException");
         public void start()
              if (capThread == null)
                   capThread = new Thread(this, "Capture Thread");
                   capThread.start();
         public Image getFrameImage()
              // Grab a frame
              final FrameGrabbingControl fgc = (FrameGrabbingControl)
              player.getControl("javax.media.control.FrameGrabbingControl");
              buf = fgc.grabFrame();
              // Convert it to an image
              btoi = new BufferToImage((VideoFormat)buf.getFormat());
              return btoi.createImage(buf);
         @Override
         public void run() {
              // TODO Auto-generated method stub
    }

    Sorry guys, I haven't looked at your links yet but I will, once I get some time to sit down and code again. I just wanted to provide this piece of code that uses the Graphics2d you're talking about to overlay text onto an image but I haven't been able to plug it into my code at all. If you're links answer the question, I'm sorry, just providing it until I can actually sit down and spend time on the research you've given me. Thanks.
    import java.awt.*;
    import java.awt.font.*;
    import java.awt.geom.*;
    import java.awt.image.*;
    import java.io.*;
    import java.net.*;
    import java.text.*;
    import java.util.*;
    import javax.imageio.*;
    import javax.swing.*;
    public class WaterMark {
        public static void main(String[] args) throws IOException {
             String speed = "50";
            URL url = new URL("file:c:\\images\\1.jpg");
            BufferedImage im = ImageIO.read(url);
            String text = speed + " Km/H";
            Graphics2D g = im.createGraphics();
    //        g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
    //        g.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
    //        g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g.setFont(new Font("Lucida Bright", Font.ITALIC, 40));
    //        g.rotate(-Math.PI/4, im.getWidth()/2, im.getHeight()/2);
            TextLayout tl = new TextLayout(text, g.getFont(), g.getFontRenderContext());
    //        Rectangle2D bounds = tl.getBounds();
    //        double x = (im.getWidth()-bounds.getWidth())/2 - bounds.getX();
    //        double y = (im.getHeight()-bounds.getHeight())/2 - bounds.getY();
            double x = 10;
            double y = 50;
            Shape outline = tl.getOutline(AffineTransform.getTranslateInstance(x+2, y+1));
    //        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f));
            g.setPaint(Color.BLACK);
            g.draw(outline);
    //        g.setPaint(new GradientPaint(0, 0, Color.WHITE, 30, 20, new Color(128,128,255), true));
            tl.draw(g, (float)x, (float)y);
            g.dispose();
            display(im);
        public static void display(BufferedImage image) {
            JFrame f = new JFrame("WaterMark");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.getContentPane().add(new JLabel(new ImageIcon(image)));
            f.pack();
            f.setLocationRelativeTo(null);
            f.setVisible(true);
    }

  • Every time I right click on an image and select Download image Firefox crashes . I have reinstalled; uninstalled and deleted folders and then reinstalled; added

    Every time I right click on an image and select Download image Firefox crashes . I have reinstalled; uninstalled and deleted folders and then reinstalled; added no plugins; checked I can DL the same images in IE-works good.I use Win7 pro and it works in other profiles in Windows 7. I created a new profile in Windows and that worked for about 2 months and now that has gone the same way as my admin profile has done. I deleted the sqlite download file-still same prob..Please help. I use Firefox 13.0.1

    That sounds very frustrating.
    By the way, does it say "Download image" or "Save Image As"? Just checking whether you have an add-on downloader in the mix that might be relevant. If you do have an add-on, try using the built-in command.
    Do you also crash if you save from here:
    right-click page > View Page Info > Media tab > (select image) > Save As
    I assume you have seen this article and tried these things: [[What to do if you can't download or save files]].
    Have you tried the new Reset feature in Firefox 13? This duplicates certain key data from your active settings folder into a new one, bypassing some add-ons and custom settings. Your plugins will still be active, but could be disabled manually if you like.
    More information in this article: [[Reset Firefox – easily fix most problems]].
    If the new settings folder has the same problem, you can switch back if you like using Firefox's Profile Manager.
    Does it make any difference?

Maybe you are looking for