allora, sto provando a guardare in giro ma c'è qualcosa che mi manca.
per ora sto provando con questa libreria, che mi sembra faccia la stessa cosa: http://www.randelshofer.ch/monte/ (in fondo JPEG CMYK Demo).
ho cambiato così (da sistemare ovviamente):
codice:
    public void resizeImage(String inputImage, String dir, int width, int height) {
        File f = new File(inputImage);
        try {
            Image image = ImageIO.read(f);
            Image newImage = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
            BufferedImage buf = new BufferedImage(newImage.getWidth(null), newImage.getHeight(null), BufferedImage.TYPE_INT_RGB);
            Graphics2D g2 = buf.createGraphics();
            g2.drawImage(newImage, 0, 0, null);
            g2.dispose();
            String ext = FilenameUtils.getExtension(f.getName());
            ImageIO.write(buf, ext, new File(dir + f.getName()));
        } catch (IOException ex) {
            if (ex.getMessage().equals("Unsupported Image Type")) {
                try {
                    BufferedImage img = null;
                    try (ImageInputStream iis = new FileImageInputStream(f)) {
                        CMYKJPEGImageReader r = new CMYKJPEGImageReader(new CMYKJPEGImageReaderSpi());
                        r.setInput(iis);
                        img = r.read(0);
                    }
                    System.out.println("ok");
                } catch (IOException ex1) {
                    System.out.println(ex1.getMessage());
                }
            }
        }
    }
per ora, intercetto l'evento Unsupported Image Type, e in quel caso devo mandare in esecuzione la lettura del file CMYK.
ma qua mi perdo.
probabilmente in maniera stupida, ma è che per fare il riszing di file RGB, nel try, uso:
codice:
Image image = ImageIO.read(f);
Image newImage = image.getScaledInstance(width, height, Image.SCALE_SMOOTH);
BufferedImage buf = new BufferedImage(newImage.getWidth(null), newImage.getHeight(null), BufferedImage.TYPE_INT_RGB);
..............
il mio problema è che non riesco a trovare una maniera per usare getScaledInstance nel caso di CMYK.
ho provato a vedere in giro, ma non ho trovato esempi del mio caso.
qualche idea?