Danke, hat geholfen!
Es funktioniert jetzt auch ohne dem Umweg als Datei:
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
//import java.io.File;
import java.io.IOException;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import javax.imageio.ImageIO;
import org.nuclos.common.NuclosImage;
import org.nuclos.server.ruleengine.NuclosBusinessRuleException;
public abstract class Images {
public static NuclosImage ResizeImage(NuclosImage nImg, Integer wNew, Integer hNew) throws NuclosBusinessRuleException {
try {
//Image img = new ImageIcon(ImageIO.read(new File("c:/Beispiel.jpg"))).getImage();
BufferedImage img = ImageIO.read(new ByteArrayInputStream(nImg.getContent()));
Integer wOld = img.getWidth(null);
Integer hOld = img.getHeight(null);
if ((wOld>wNew && wNew>0) || (hOld>hNew && hNew>0)) {
if (wOld*1.0/wNew*1.0 > hOld*1.0/hNew*1.0){
wNew = (int)(wOld*1.0/(wOld*1.0/wNew*1.0));
hNew = (int)(hOld*1.0/(wOld*1.0/wNew*1.0));
}else{
wNew = (int)(wOld*1.0/(hOld*1.0/hNew*1.0));
hNew = (int)(hOld*1.0/(hOld*1.0/hNew*1.0));
}
Image scaledImage = img.getScaledInstance(wNew, hNew, Image.SCALE_SMOOTH);
BufferedImage outImg = new BufferedImage(wNew, hNew, BufferedImage.TYPE_INT_RGB);
Graphics g = outImg.getGraphics();
g.drawImage(scaledImage, 0, 0, null);
g.dispose();
//ImageIO.write(outImg, "jpeg", new File("c:/Beispiel_small.jpg"));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ImageIO.write(outImg, "jpeg", baos);
return new NuclosImage("Image", baos.toByteArray(), null, true);
} else {
return nImg;
}
} catch (IOException e) {
throw new NuclosBusinessRuleException(e.toString());
}
}
}
Gruß
Hugo