//获取旗帜
File flag_file=new File("五星红旗.jpg");
BufferedImage flag_image=ImageIO.read(flag_file);
//获取头像
File head_file=new File("1.jpg");
BufferedImage head_image=ImageIO.read(head_file);
//求旗帜和头像最小长宽
int w1=flag_image.getWidth();
int h1=flag_image.getHeight();
int w2=head_image.getWidth();
int h2=head_image.getHeight();
int w=w1<w2?w1:w2;
int h=h1<h2?h1:h2;
//创建输出图像
File new_file=new File("out.jpg");
BufferedImage new_image=new BufferedImage(w,h,BufferedImage.TYPE_3BYTE_BGR);
//创建一个画笔
Graphics g= new_image.getGraphics();
//绘制头像
for(int i=0;i<w;i++){
for(int j=0;j<h;j++){
//获取像素点
int rgb=head_image.getRGB(i,j);
Color c=new Color(rgb);
//设置画笔颜色
g.setColor(c);
//绘制一个点
g.drawLine(i,j,i,j);
}
}
//绘制国旗
for(int i=0;i<w;i++){
for(int j=0;j<h;j++){
int rgb=flag_image.getRGB(i, j);
int rgbs[]=new int[3];
//分别取RGB
rgbs[0]=(rgb&0xff0000)>>16; //R
rgbs[1]=(rgb&0xff00)>>8; //G
rgbs[2]=rgb&0xff; //B
int alpha=(int)(255*(1-((float)i/(float)w))); //透明度
Color c=new Color(rgbs[0],rgbs[1],rgbs[2],alpha);
g.setColor(c);
g.drawLine(i,j,i,j);
}
}
//输出图像
OutputStream out=new FileOutputStream(new_file);
ImageIO.write(new_image, "jpg", out);
输入:五星红旗.jpg,1.jpg
输出:out.jpg