簡體   English   中英

Java:使用WritableRaster.setRect疊加圖像?

[英]Java: using WritableRaster.setRect to superimpose an image?

我一直在使用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/Sun2/Sunflower_as_gif_small.gif
花
對此: https//www.google.com/intl/zh_CN/images/logo.gif
替代文字

該產品顯示為: http : //imgur.com/xnpfp.png
image腳的形象

從我看到的示例來看,這似乎是適當的方法。 我錯過了一步嗎? 有沒有更好的方法來解決這個問題? 謝謝你的回復。

似乎我正在以所有錯誤的方式進行操作。 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);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM