Java:使用WritableRaster.setRect叠加的图像?
-
12-09-2019 - |
题
我已经玩了一些成像功能,试图添加一个图像。像这样:
BufferedImage background = javax.imageio.ImageIO.read(
new ByteArrayInputStream(getDataFromUrl(
"https://www.google.com/intl/en_ALL/images/logo.gif"
))
);
BufferedImage foreground = javax.imageio.ImageIO.read(
new ByteArrayInputStream(getDataFromUrl(
"https://upload.wikimedia.org/wikipedia/commons/e/e2/Sunflower_as_gif_small.gif"
))
);
WritableRaster backgroundRaster = background.getRaster();
Raster foregroundRaster = foreground.getRaster();
backgroundRaster.setRect(foregroundRaster);
基本上,我试图添加这样的: https://upload.wikimedia.org/wikipedia/commons/e/e2/Sunflower_as_gif_small.gif
在这样的: https://www.google.com/intl/en_ALL/images/logo.gif
的产品的出现为: http://imgur.com/xnpfp.png
从例子我已经看到,这似乎是适当的方法。我缺少的一个步骤?是否有更好的办法来处理这个吗?谢谢您的反应。
解决方案
看来我要对此有所有的错误的方法。这个解决方案所概述的 太阳论坛 完美的作品(复制这里的):
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
class TwoBecomeOne {
public static void main(String[] args) throws IOException {
BufferedImage large = ImageIO.read(new File("images/tiger.jpg"));
BufferedImage small = ImageIO.read(new File("images/bclynx.jpg"));
int w = large.getWidth();
int h = large.getHeight();
int type = BufferedImage.TYPE_INT_RGB;
BufferedImage image = new BufferedImage(w, h, type);
Graphics2D g2 = image.createGraphics();
g2.drawImage(large, 0, 0, null);
g2.drawImage(small, 10, 10, null);
g2.dispose();
ImageIO.write(image, "jpg", new File("twoInOne.jpg"));
JOptionPane.showMessageDialog(null, new ImageIcon(image), "",
JOptionPane.PLAIN_MESSAGE);
}
}
不隶属于 StackOverflow