
A cherry was masked onto a background.Output image looked like:
The code !
package photoshop;
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import java.io.File.*;
import java.io.BufferedOutputStream.*;
import javax.imageio.ImageIO;
import java.lang.Exception.*;
import java.io.File;
class waterMark{
String baseFile;
String waterMarkFile;
BufferedImage base;
BufferedImage waterMark;
public waterMark(String baseImage,String waterMark){
baseFile=baseImage;
waterMarkFile=waterMark;
}
public boolean fileOpen(){
boolean fileOpen=false;
try
{
base =ImageIO.read(new File(baseFile));
waterMark=ImageIO.read(new File(waterMarkFile));
fileOpen=true;
}
catch (Exception e)
{
fileOpen=false;
System.out.println(e.getStackTrace());
}
return fileOpen;
}
//mask watermark image on to base image
public void createWaterMark(){
//get base image width-hieght
int bH=base.getHeight();
int bW=base.getWidth();
//get watermark image width-hieght
int wmH=waterMark.getHeight();
int wmW=waterMark.getWidth();
int []basePixels=new int[bW*bH];
int []wmPixels=new int[wmH*wmW];
//get base image+waterMark file RGB values
base.getRGB(0, 0, bW,bH,basePixels, 0,bW);
waterMark.getRGB(0, 0,wmW,wmH,wmPixels, 0,wmW);
//set the alpha value to transparent
for(int i=0;i> 24) & 0xff;
int red = (wmPixels[i] >> 16) & 0xff;
int green = (wmPixels[i] >> 8) & 0xff;
int blue = (wmPixels[i] ) & 0xff;
Color newColor=new Color(red,green,blue,0);
wmPixels[i]=newColor.getRGB();
}
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
import java.io.File.*;
import java.io.BufferedOutputStream.*;
import javax.imageio.ImageIO;
import java.lang.Exception.*;
import java.io.File;
class waterMark{
String baseFile;
String waterMarkFile;
BufferedImage base;
BufferedImage waterMark;
public waterMark(String baseImage,String waterMark){
baseFile=baseImage;
waterMarkFile=waterMark;
}
public boolean fileOpen(){
boolean fileOpen=false;
try
{
base =ImageIO.read(new File(baseFile));
waterMark=ImageIO.read(new File(waterMarkFile));
fileOpen=true;
}
catch (Exception e)
{
fileOpen=false;
System.out.println(e.getStackTrace());
}
return fileOpen;
}
//mask watermark image on to base image
public void createWaterMark(){
//get base image width-hieght
int bH=base.getHeight();
int bW=base.getWidth();
//get watermark image width-hieght
int wmH=waterMark.getHeight();
int wmW=waterMark.getWidth();
int []basePixels=new int[bW*bH];
int []wmPixels=new int[wmH*wmW];
//get base image+waterMark file RGB values
base.getRGB(0, 0, bW,bH,basePixels, 0,bW);
waterMark.getRGB(0, 0,wmW,wmH,wmPixels, 0,wmW);
//set the alpha value to transparent
for(int i=0;i
int red = (wmPixels[i] >> 16) & 0xff;
int green = (wmPixels[i] >> 8) & 0xff;
int blue = (wmPixels[i] ) & 0xff;
Color newColor=new Color(red,green,blue,0);
wmPixels[i]=newColor.getRGB();
}
//assign the watermark pixel to baseImage file.
//fix watermark file onto top left corner of base image
for(int h=0;h
for(int w=0;w
//(i*wmW)+j gets the pixel value for a specific width-hieght
//formula tested and works
int currentBaseIndex=((h)*bW)+(w);//current base pixel
int currentWmIndex=(h*wmW)+w; //current watermark pixel
basePixels[currentBaseIndex]=wmPixels[currentWmIndex];
}
}
saveImage(basePixels,bW,bH);
}
public void saveImage(int []basePixels,int bW,int bH){
BufferedImage output=new BufferedImage(bW,bH,BufferedImage.TYPE_INT_RGB);
output.setRGB(0,0,bW,bH,basePixels,0,bW);
try {
File outputfile = new File("saved1.jpeg");
ImageIO.write(output,"jpeg", outputfile);
} catch (Exception e) {
System.out.println("error");
e.getMessage();
}
}
public void onTheFlyLogo(){
}
}
public class Main{
public static void main(String arg[]) {
//first parameter takes in baseimage file name
//second parameter takes in watermark file name
waterMark wm=new waterMark("base.jpg","mask.jpg");
wm.fileOpen();
wm.createWaterMark();
System.out.println("start");
}
}