// TagAlly Engine — plattformneutrale Bildverkleinerung für die KI-Alt-Texte.
// Ersetzt das macOS-Werkzeug `sips`: liest JPEG/PNG/TIFF/BMP/GIF über ImageIO,
// skaliert auf max. 896 px (längste Kante) und schreibt JPEG mit weißem
// Hintergrund (Transparenz würde im JPEG sonst schwarz).
//
// Aufruf:  java TagAllyImg eingabe.bild ausgabe.jpg
// Exit-Codes: 0 ok · 2 Aufruffehler · 3 Format nicht lesbar · 4 Schreiben fehlgeschlagen

import javax.imageio.ImageIO;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;

public class TagAllyImg {

    public static void main(String[] args) throws Exception {
        if (args.length < 2) {
            System.err.println("Nutzung: TagAllyImg eingabe.bild ausgabe.jpg");
            System.exit(2);
        }
        BufferedImage src;
        try {
            src = ImageIO.read(new File(args[0]));
        } catch (Exception e) {
            System.err.println("READ_ERROR: " + e.getMessage());
            System.exit(3);
            return;
        }
        if (src == null) {
            // ImageIO kennt das Format nicht (z. B. PSD) — der Aufrufer kann
            // auf macOS auf `sips` zurückfallen.
            System.err.println("UNSUPPORTED_FORMAT");
            System.exit(3);
            return;
        }
        int max = 896;
        int w = src.getWidth(), h = src.getHeight();
        if (w > max || h > max) {
            double s = Math.min((double) max / w, (double) max / h);
            w = Math.max(1, (int) Math.round(w * s));
            h = Math.max(1, (int) Math.round(h * s));
        }
        BufferedImage rgb = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = rgb.createGraphics();
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, w, h);
        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        g.drawImage(src, 0, 0, w, h, null);
        g.dispose();
        if (!ImageIO.write(rgb, "jpg", new File(args[1]))) {
            System.err.println("WRITE_FAILED");
            System.exit(4);
        }
    }
}
