Объединить изображение поверх другого в указанной позиции и сохранить его как новое изображение? - PullRequest
2 голосов
/ 22 апреля 2010

сохранить изображение, созданное путем слияния изображения с другим изображением?

Сначала у меня есть изображение, и я хочу вставить текст поверх этого изображения в указанной позиции, учитывая, что я получил это правильно. Но новая задача - поместить это последнее сгенерированное изображение поверх другого шаблона изображения в укажите местоположение и сохраните его как новое изображение jpg в моей рабочей директории ..

1 Ответ

4 голосов
/ 22 апреля 2010

Вот пример того, как использовать Оверлей изображения с использованием java2D. Поскольку вы также пометили [jquery], я не уверен, хотите ли вы сделать это с помощью jquery или java.

Я имел в виду 2-й фрагмент, отремонтированный и работает

import java.awt.AlphaComposite;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class WaterMark {
    public static void main(String[] args) throws IOException {
        URL url = new URL("http://sstatic.net/so/img/logo.png");
        BufferedImage im = ImageIO.read(url);
        URL url2 = new URL("http://sstatic.net/sf/img/logo.png");
        BufferedImage im2 = ImageIO.read(url2);
        Graphics2D g = im.createGraphics();
        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.4f));
        g.drawImage(im2, (im.getWidth()-im2.getWidth())/2, (im.getHeight()-im2.getHeight())/2, null);
        g.dispose();

        display(im);
        ImageIO.write(im, "jpeg", new File("sample_output.jpeg"));
    }

    public static void display(BufferedImage image) {
        JFrame f = new JFrame("WaterMark");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.getContentPane().add(new JLabel(new ImageIcon(image)));
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }
}
...