[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

merging 2 images

Posted on 2002-07-16
7
Medium Priority
?
312 Views
Last Modified: 2010-03-31
I have a background image and a foreground image.

I want to overlay the foreground image on top of the background image so that I can see parts of the background below.  I have drawn the foreground image with black where I want it to be transparent.  I need some code to show me how to merge the 2 images.

Thanks,
Mike.
0
Comment
Question by:MDarling
  • 4
  • 2
7 Comments
 
LVL 2

Expert Comment

by:s_lavie
ID: 7157138
Can you send the code of what you did, so we'll speak the same "language"?
0
 
LVL 3

Author Comment

by:MDarling
ID: 7157145
I haven't got any code yet.  Just need to load an image, load another, then overlay one on top of the other with the top one being transparent wherever it is black.
0
 
LVL 2

Expert Comment

by:s_lavie
ID: 7157170
Can the background image be a transparent gif?
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 3

Author Comment

by:MDarling
ID: 7157191
No the background image is totally opaque.
The foreground image is partially transparent.

All my images are png format, they are also in high colour format, which is beyound GIF capabilities.
0
 
LVL 16

Accepted Solution

by:
imladris earned 800 total points
ID: 7157271
One solution would be to process the foreground image as it is loaded, turning all the black pixels to transparent ones. To do this write an imagefilter something like:

class TransFilter extends RGBImageFilter
{     TransFilter()
     {     canFilterIndexColorModel=true;
          return;
     }

        // if rgb is black (red, green and blue components
        // all off) return a transparent pixel
        // (alpha component (top byte) off)

     public int filterRGB(int x,int y,int rgb)
     {     int i;

                return((rgb&0xffffff)==0?0:rgb);
     }
}


You use an imagefilter with something like:

Image buf=getImage(name);  // get the image
ImageFilter flt=new TransFilter();
ImageProducer p=new FilteredImageSource(buf.getSource(),flt);
Image pi=window.createImage(p);


Out of curiosity, what software are you using to load png images? I have done png's in the past, but the libraries I found all turned out to have substantive problems, though that was some years ago.
0
 
LVL 3

Author Comment

by:MDarling
ID: 7157325
Hi imladris

Im just using loadImage from the Java SDK.  Seems to work ok.  

I'll check out your code and get back to you.

Thanks,
Mike.
0
 
LVL 3

Author Comment

by:MDarling
ID: 7158156
Thanks - just the job!

Regards,
Mike.
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

INTRODUCTION Working with files is a moderately common task in Java.  For most projects hard coding the file names, using parameters in configuration files, or using command-line arguments is sufficient.   However, when your application has vi…
Java Flight Recorder and Java Mission Control together create a complete tool chain to continuously collect low level and detailed runtime information enabling after-the-fact incident analysis. Java Flight Recorder is a profiling and event collectio…
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.
Suggested Courses
Course of the Month19 days, 13 hours left to enroll

872 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question