How can I stack Graphics2D objects

How can I stack two or more Graphics2D objects on the same BufferedImage.

I am trying to create layers. Here is an example I have started with. The problem is the remarked code. The effect is correct but it is applied to the complete image. I would like to separate the effect to only the shadow text. I would appreciate any help. I am new to Java so still fumbling around with concepts.
import java.awt.*;
import java.awt.font.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import java.awt.geom.*;
import java.util.*;
public class ShadowText {
static Rectangle2D.Double Rectangle;
static BufferedImage image;
static Graphics graphics;
static Graphics2D g2d;
static TextLayout textLayout;
public ShadowText() {
public static void main(String[] args) {
BufferedImage image = new BufferedImage(500,120,BufferedImage.TYPE_INT_RGB);
Rectangle2D Rectangle = new Rectangle2D.Double(0,0,500,120);
graphics = image.getGraphics();
g2d = (Graphics2D) graphics;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setPaint(Color.white);
g2d.fill(Rectangle);
g2d.draw(Rectangle);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
//g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .5f));
textLayout = new TextLayout("Shadow Text", new Font("Serif", Font.BOLD, 70), g2d.getFontRenderContext());
g2d.setPaint(Color.black);
textLayout.draw(g2d, 12, 102);
//float ninth = 1.0f / 9.0f;
//float[] kernel = {ninth, ninth, ninth, ninth, ninth, ninth, ninth, ninth, ninth};
//biop = new ConvolveOp(new Kernel(3, 3, kernel));
//op = (BufferedImageOp) biop;
//image = op.filter(image,null);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
textLayout = new TextLayout("Shadow Text", new Font("Serif", Font.BOLD, 70), g2d.getFontRenderContext());
g2d.setPaint(Color.black);
textLayout.draw(g2d, 10, 100);
Write("C:/JavaTraining/Filters/images/ShadowText.jpg",image);
public static void Write(String file, BufferedImage image){
//Check for file exsist
StringTokenizer tokens = new StringTokenizer(file,".");
if(tokens.countTokens()>0){
String filename = tokens.nextToken().trim();
String type = tokens.nextToken().trim();
try{
if(type.equalsIgnoreCase("gif")) type = "png";
ImageIO.write(image, type, new File(file));
}catch (IOException e){
System.out.println("Invalid file name or path! "+file);
}else{
System.out.println("Invalid file name! "+file);
}

Similar Messages

  • How can you move the objects from one server to another?

    how can you move the objects from one server to another?

    Hi,
    Collecting objects for Transporting
    1. rsa1->transport connection
    2. left panel choose 'object type', middle panel choose 'infocube' and 'select objects'
    3. then choose your infocube and 'transfer'
    4. will go to right panel, choose collection mode 'manual' and grouping only 'necessary objects'
    5. after objects collection finished, create request
    6. If they are $TMP, then change the package.
    7. When you click the Save on the change package, it will prompt for transport. Here you can provide an existing open transport request number, or if you like here itself you can create a new one.
    8. You can check the request in SE09 to confirm.
    Releasing Transport Request  
    Lets say you are transporting from BWD to BWQ
    Step 1: In BWD go to TCode SE10
    Step 2: Find the request and release it (Truck Icon or option can be found by right click on request #)
    Note: First release the child request and then the parent request
    Steps below are to import transport (generally done by basis )
    Step 1: In BWQ go to Tcode STMS
    Step 2: Click on Import queue button
    Step 3: Double Click on the line which says BWQ (or the system into which transport has to be imported)
    Step 4: Click on refresh button
    Step 5: High light the trasnport request and import it (using the truck icon)
    Transport
    http://help.sap.com/saphelp_nw2004s/helpdata/en/b5/1d733b73a8f706e10000000a11402f/frameset.htm
    http://help.sap.com/saphelp_nw70/helpdata/en/0b/5ee7377a98c17fe10000009b38f842/frameset.htm
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/media/uuid/224381ad-0701-0010-dcb5-d74236082bff
    Hope this helps.
    thanks,
    JituK

  • How can i convert an object to stream of chars or bytes?

    how can i convert an object to stream of chars or bytes?

    One way is the serialization mechanism. There are examples and explanations of it in the Java tutorial: http://java.sun.com/docs/books/tutorial/essential/io/serialization.html

  • How can I create a object for a note?

    Hi experts,
        I need to apply the note 501905 but when I try in the SNOTE transacction I receive this error:
    Object REPS Z_MRM_DELETE_PP does not exist; create it
    Diagnosis
    The SAP Note that you want to implement contains changes to an object that does not yet exist in your system.
    SAP Notes contain only changes to objects that already exist. This means that the the system cannot automatically create new objects during the implementation of this SAP Note.
    Procedure
    1. Cancel the SAP Note implementationl.
    2. Create an empty object REPS Z_MRM_DELETE_PP with the corresponding object editor.
    3. Restart the SAP Note implementation.
    How can I create that Object??
    Thanks for the help!

    Hi Carlos,
    It says that you have to create a new program with a name Z_MRM_DELETE_PP.
    Once you create and activate the program you can execute the SAP Note.
    All this processure will be written in the SAP Note.
    Please Go through the Note using below:
    Step1: Use T.code SNOTE.
    Step2: Use menu GOTO --> NOTE BROWSER. Provide the Note no and EXECUTE.
    Step3: Double click on the displayed line.
    Here you will get the information to do before implementing the note.
    Go through all the documentation, and once you did all the development given in the note then you can implement the note.
    Regards,
    Sreekanth.

  • How can I pass an object to a function by value?

    Hi
    I have a function with an argument. this argument is an object. I don't want to alter this object. But java passes this object by reference and some fields in this object are altered after function return.
    How can I pass this object by value and keep my original data unbroken?
    thanks for any help

    a.toraby wrote:
    I have a function with an argument. this argument is an object. I don't want to alter this object. But java passes this object by reference and some fields in this object are altered after function return.
    How can I pass this object by value and keep my original data unbroken?How you approach it is likely to depend on how much control you have over the code in question. If it's legacy code and has been badly designed, there's probably very little you can do to protect existing code short of a complete refactoring.
    What you could do as an interim measure is:
    1. Create an immutable wrapper to your existing mutable class.
    2. Create new methods that replicate the existing ones, but take the immutable class instead.
    3. Deprecate the old methods.
    This won't break client code, but they will now get warnings when they compile and you can add documentation to point them to the new class/methods.
    If you are in control of the code (especially if you're still in the design stages), you've got several options:
    1. As Dr.Clap says, make your class immutable (probably best).
    2. If this isn't possible, create mutable and immutable variants of your class. This is often best achieved by hanging them both from an interface.
    Winston

  • How can I tell which object is causing my error

    How can I determine which object has the lock, and for brownie points, release it?
    The SP is using a view, are view read only by default in Oracle, so I can rule that out as the 'locker'?
    If not, I'd like to modify with the equivalent of WITH(NO_LOCK). How can I do this in Oracle?
    Error report:
    SQL Error: ORA-04021: timeout occurred while waiting to lock object
    ORA-06512: at "PVNG_RPT.RPT_POP_COMMON_ORDER_PATRON", line 5
    ORA-06512: at "PVNG_RPT.RPT_SP_ORDER_DETAIL", line 402
    04021. 00000 - "timeout occurred while waiting to lock object %s%s%s%s%s"
    *Cause:    While waiting to lock a library object, a timeout is occurred.
    *Action:   Retry the operation later.
    Many thanks
    DC

    That's the insert statement.....
    INSERT INTO
    Ahaaaaaaa,
    I have investigated moere and it looks like one of my American colleagues has been tinkering.
    I see RPT_POP_COMMON_ORDER_PATRON_1 and RPT_POP_COMMON_ORDER_PATRON_2 in the object tree.
    I've dropped _2 - Fine
    I'm trying to drop _1, but that's having a really good think about it......>= 3 mins so far.
    So, I guess that that points to RPT_POP_COMMON_ORDER_PATRON_1 being the culprit iof the lock, hence why it is struggling to be dropped.
    How can I drop a proc that has locks, essentially saying, "I don't care what you're doing - I want you out of my database and take your locks with you!". :)
    Thanks all
    DC

  • How can I remove an object using Photoshop Elements 7?

    How can I remove an object using Photoshop Elements 7?

    You could probably use the 8 point garbage matte in this situation. I personally think the 8-point garbage matte is a bit cumbersome, but it should get the job done.
    1. Use the Razor Blade tool to place a cut before and after the shot with the bottle.
    2. Select the bottle clip.
    3. Press and hold Shift + Option, then drag the bottle clip up one track. This should create a duplicate clip directly above your original clip. (I'll refer to this duplicated clip as bottle2.)
    4. Locate the 8-point Garbage Matte filter and apply it to bottle2.
    5. Locate the Gaussian Blur filter and apply it to bottle2.
    6. Control click bottle1, and uncheck the "Clip Enable" setting from the shortcut menu. This will disable that clip.
    7. Double click bottle2 to load it into the Viewer. Then select the Filter tab.
    8. For the Garbage Matte filter, you'll notice 8 rows of numbers, these are the current locations for the control points, which you should be able to see in the Canvas. Start with point #1, and click the "+" button in the filters area, then in the Canvas click and drag to move the point. When you release the mouse button, you'll need to reclick the "+" button in the filters tab. Repeat these steps until you've isolated the bottle.
    9. Feather the edge of the matte.
    10. Adjust the Blur amount.
    11. Reenable bottle1. Playback the clip and make any necessary adjustments.
    Depending on your experience with Motion, you might also want to try sending bottle1 to Motion, then use Motion to control the layering.

  • How can I Serialize the Object of org.apache.xalan.transformer.TransformerI

    Teachers:
    How can I Serialize the Object of org.apache.xalan.transformer.TransformerImpl.

    org.apache.xalan.transformer.TransformerImpl doesn't appear to be serializable... what do you try to achieve?

  • How can we make one object as synchronizable?

    Hi!
    I am new to java.How can we make one object as synchronizable?
    Thanx

    Synchronize is used to make an object and/or a functional sequence thread safe. By itself it does not make something thread safe.
    So the point is to make something thread safe not just to synchronize it.
    You can either sychronize a method like so....
          public synchronized void doit()
    Or you synchronize on an object (where 'Object' below is solely as an example, any object can be used)...
          Object lockObject = new Object();
          public void doit()
             sychronized (lockObject)

  • How can we restrict the objects..?

    Hi it was a question asked in an interview.
    How can we restrict the object..?
    is it with RSSM and PFCG settings..?
    Correct me if I am wrong..!
    Cheers,
    Vasu

    hi Vasu,
    if the question is restriction in reporting by authorization, then you are right. take a look some bw authorization docs
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/adeac294-0501-0010-5a97-9ac5d562b1be
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/1b439590-0201-0010-ea8e-cba686f21f06
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/39f29890-0201-0010-1197-f0ed3a0d279f
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/a6329790-0201-0010-b4a1-fdd384045fdb
    hope this helps.

  • How can I write new objects to the existing file with already written objec

    Hi,
    I've got a problem in my app.
    Namely, my app stores data as objects written to the files. Everything is OK, when I write some data (objects of a class defined by me) to the file (by using writeObject method from ObjectOutputStream) and then I'm reading it sequencially by the corresponding readObject method (from ObjectInputStream).
    Problems start when I add new objects to the already existing file (to the end of this file). Then, when I'm trying to read newly written data, I get an exception:
    java.io.StreamCorruptedException
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readObject(Unknown Source)
    Is there any method to avoid corrupting the stream? Maybe it is a silly problem, but I really can't cope with it! How can I write new objects to the existing file with already written objects?
    If anyone of you know something about this issue, please help!
    Jai

    Here is a piece of sample codes. You can save the bytes read from the object by invoking save(byte[] b), and load the last inserted object by invoking load.
    * Created on 2004-12-23
    package com.cpic.msgbus.monitor.util.cachequeue;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    * @author elgs This is a very high performance implemention of Cache.
    public class StackCache implements Cache
        protected long             seed    = 0;
        protected RandomAccessFile raf;
        protected int              count;
        protected String           cacheDeviceName;
        protected Adapter          adapter;
        protected long             pointer = 0;
        protected File             f;
        public StackCache(String name) throws IOException
            cacheDeviceName = name;
            f = new File(Const.cacheHome + name);
            raf = new RandomAccessFile(f, "rw");
            if (raf.length() == 0)
                raf.writeLong(0L);
         * Whne the cache file is getting large in size and may there be fragments,
         * we should do a shrink.
        public synchronized void shrink() throws IOException
            int BUF = 8192;
            long pointer = getPointer();
            long size = pointer + 4;
            File temp = new File(Const.cacheHome + getCacheDeviceName() + ".shrink");
            FileInputStream in = new FileInputStream(f);
            FileOutputStream out = new FileOutputStream(temp);
            byte[] buf = new byte[BUF];
            long runs = size / BUF;
            int mode = (int) size % BUF;
            for (long l = 0; l < runs; ++l)
                in.read(buf);
                out.write(buf);
            in.read(buf, 0, mode);
            out.write(buf, 0, mode);
            out.flush();
            out.close();
            in.close();
            raf.close();
            f.delete();
            temp.renameTo(f);
            raf = new RandomAccessFile(f, "rw");
        private synchronized long getPointer() throws IOException
            long l = raf.getFilePointer();
            raf.seek(0);
            long pointer = raf.readLong();
            raf.seek(l);
            return pointer < 8 ? 4 : pointer;
         * (non-Javadoc)
         * @see com.cpic.msgbus.monitor.util.cachequeue.Cache#load()
        public synchronized byte[] load() throws IOException
            pointer = getPointer();
            if (pointer < 8)
                return null;
            raf.seek(pointer);
            int length = raf.readInt();
            pointer = pointer - length - 4;
            raf.seek(0);
            raf.writeLong(pointer);
            byte[] b = new byte[length];
            raf.seek(pointer + 4);
            raf.read(b);
            --count;
            return b;
         * (non-Javadoc)
         * @see com.cpic.msgbus.monitor.util.cachequeue.Cache#save(byte[])
        public synchronized void save(byte[] b) throws IOException
            pointer = getPointer();
            int length = b.length;
            pointer += 4;
            raf.seek(pointer);
            raf.write(b);
            raf.writeInt(length);
            pointer = raf.getFilePointer() - 4;
            raf.seek(0);
            raf.writeLong(pointer);
            ++count;
         * (non-Javadoc)
         * @see com.cpic.msgbus.monitor.util.cachequeue.Cache#getCachedObjectsCount()
        public synchronized int getCachedObjectsCount()
            return count;
         * (non-Javadoc)
         * @see com.cpic.msgbus.monitor.util.cachequeue.Cache#getCacheDeviceName()
        public String getCacheDeviceName()
            return cacheDeviceName;
    }

  • How can i make my object appear as a mesh?

    How can I make an object appear as a mesh? I dont want anything as complicated as a coloured gradient I just want a flat object to appear like a net. Is there an easy way to do this?
    Thanks
    J

    Jules,
    Depending on the shape, and upon the appearance (varying width and/or knotting or whatever), it may be anything from a Rectangular/Polar Grid (bundled with the Line Segment Tool) to something intricate and difficult.

  • How can 1 make an object of user defined class immutable?

    Hi All,
    How can one make an object of user defined class immutable?
    Whats the implementation logic with strings as immutable?
    Regards,

    Hi All,
    How can one make an object of user defined class
    immutable?The simple answer is you can't. That is, you can't make the object itself immutable, but what you can do is make a wrapper so that the client never sees the object to begin with.
    A classic example of a mutable class:
    class MutableX {
        private String name = "None";
        public String getName() {
            return name;
        public void setName(String name) {
            this.name = name;
    }I don't think it's possible to make this immutable, but you can create a wrapper that is:
    class ImmutableX {
        private final MutableX wrappedInstance;
        public ImmutableX (String name) {
            wrappedInstance = new MutableX();
            wrappedInstance.setName(name);
        public String getName() {
            return wrappedInstance.getName();
        // Don't give them a way to set the name and never expose wrappedInstance.
    }Of course, if you're asking how you can make your own class immutable then the simple answer is to not make any public or protected methods that can mutate it and don't expose any mutable members.
    Whats the implementation logic with strings as
    immutable?
    Regards,I don't understand the question.

  • How can I cache an object for unlimited time or for ever.

    Hi,
    How can I cache an object for ever or unlimited time. What values should be used to in cache-config.xml i.e.
    <expiry-delay system-property="tangosol.coherence.zerostage.expiry.delay">XXXms</expiry-delay>
    <flush-delay system-property="tangosol.coherence.zerostage.flush.delay">XXXms</flush-delay>
    thanks a lot in advance.

    Hi Suhas,
    If you look in the documentation http://download.oracle.com/docs/cd/E14526_01/coh.350/e14509/toc.htm and more specifically here http://download.oracle.com/docs/cd/E14526_01/coh.350/e14509/appcacheelements.htm#BABDHGHJ you will see the explination for the two configuration items you mention.
    The default expiry-delay is zero which means no expiry - that is the data will stay in the cache forever (or until you do a remove). If expiry is zero then flush-delay has a default of zero is used and automatic flushes are disabled.
    JK

  • How can I use hyperion objects inside ASP?

    I want to access Essbase by hyperion objects with using in ASP.is it possible? if it is possible,how can I do this? I'll be glad if you help me...Thanks...

    Not that I am aware of.. Besides, the data server control is single threaded and would not be a good candidate for web apps..As a research project internally, we created an ASP demo that uses web services to talk to Essbase Deployment Services (Java API).. Let me know if you are interested in seeing that demo and I will give you the URL and a username/password..TimTim TowApplied OLAP, Inc

Maybe you are looking for

  • Creation of Secondary Index

    Hi... Scenario: I have loaded BX and BF as per practice. However, i am not getting current stock values for materials which had 0 opening stock when BX was pulled (I did not select checkbox 'Zero stock to be transferred'). Note 823951 suggests execut

  • Do I need to take a form of purchase when I see a 'genius'?

    I'm going to see a genius tomorrow about my iPhone 4, and am wondering whether I need to take a form of purchase for it? I cannot vividly remember it coming with a receipt, seeing as it was just the box it came in... I ordered it directly from Apple.

  • Why no AppLinking in PSTouch?

    Hi, I would like App Linking please!? I can't believe it hasn't got it already, it's the most expensive photo app on my iPad and the only one that doesn't have it! If I get a picture emailed to me or iMessaged or want to open in PSTouch from another

  • Blue Tooth Stereo not working like it used to (Lollipop Upgrade)

    I have an LG G3 - All around I really love this phone. However, last week the Lollipop OS came out and I upgraded it to that 5.0.1 OS. I now regret doing so and wish I could go back to the previous OS. Here's my issue - The Bluetooth stereo no longer

  • SSD Install - System Problems

    I'm posting this hoping someone has an answer for my dilemma. This weekend I installed a Samsung 256 SSD in my MB Pro unibody 15. I formatted the SSD with GUID and did a zero erase. I then installed OS X from the disc that came with my laptop three m