Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
1.9 kB
1
Indexable
Never
import org.springframework.stereotype.Component;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

@Component
public class ImageOverlayService {

    public void overlayImagesWithTransparency(String backgroundImagePath, String overlayImagePath, String outputPath) {
        try {
            BufferedImage backgroundImage = loadImage(backgroundImagePath);
            BufferedImage overlayImage = loadImage(overlayImagePath);

            if (backgroundImage != null && overlayImage != null) {
                BufferedImage resultImage = new BufferedImage(
                        backgroundImage.getWidth(), backgroundImage.getHeight(), BufferedImage.TYPE_INT_ARGB);

                Graphics2D resultGraphics = resultImage.createGraphics();

                // Narysuj tło
                resultGraphics.drawImage(backgroundImage, 0, 0, null);

                // Narysuj guziki z pierwszego obrazka na drugim obrazku jako transparentne
                AlphaComposite alphaComposite = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.0f);
                resultGraphics.setComposite(alphaComposite);
                resultGraphics.drawImage(overlayImage, 0, 0, null);

                resultGraphics.dispose();

                saveImage(resultImage, outputPath);
            } else {
                System.err.println("Błąd podczas wczytywania obrazów.");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private BufferedImage loadImage(String path) throws IOException {
        return ImageIO.read(new File(path));
    }

    private void saveImage(BufferedImage image, String outputPath) throws IOException {
        ImageIO.write(image, "png", new File(outputPath));
    }
}