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?