0

私はJavaの画像機能のいくつかを試して、ある画像を別の画像に重ね合わせようとしています。そのようです:

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 on this:https : //www.google.com/intl/en_ALL/images/logo .gif
花

代替テキスト

製品は次のように表示されます:http://imgur.com/xnpfp.png
安っぽい画像

私が見た例から、これは適切な方法のようです。私は一歩を逃していますか?これを処理するためのより良い方法はありますか?ご回答ありがとうございます。

4

1 に答える 1

1

私はこれについてすべて間違った方法で行っていたようです。Sun フォーラムで概説されているこのソリューションは完全に機能します (ここにコピー)。

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);
    }
}
于 2009-04-28T02:30:43.427 に答える