Marine_of_Hell
Grünschnabel
Moin!
Ich habe hier ein seltsames Problem und weiß so langsam nicht mehr weiter.
Wenn ich ImageIO.write nutze, erhalte ich (nach einiger Zeit!) eine NPE!
Hier mal mein Code:
Als NPE Exception kommt:
Die Variablen "mainImg" und "overlayImgUrl" sind richtig gesetzt - also nicht null. Sonst würde er ja nicht entsprechend soweit laufen.
Die Exception kommt aus der Zeile "ImageIO.write(imgOverlay, "png", new File(newFilename));" (hier Zeile 28).
Wie gesagt - die Methode läuft mehrmals täglich ohne Probleme durch. Erst nach einiger Laufzeit stellt er den Betrieb mit der NPE ein.
Für Ideen/Vorschläge/Verbesserungen bin ich jederzeit zu haben.
Danke für eure Hilfe schon mal.
Gruss,
Thomas
Ich habe hier ein seltsames Problem und weiß so langsam nicht mehr weiter.
Wenn ich ImageIO.write nutze, erhalte ich (nach einiger Zeit!) eine NPE!
Hier mal mein Code:
Code:
if(mainImg == null || overlayImgUrl == null)
return null;
String ovPartName = overlayImgUrl.substring(overlayImgUrl.lastIndexOf("/") + 1);
ovPartName = ovPartName.substring(0, ovPartName.indexOf("."));
String newFilename = mainImg.substring(mainImg.lastIndexOf("/") + 1);
newFilename = newFilename.substring(0, newFilename.indexOf(".")) + ovPartName + ".png";
if((new File(newFilename)).exists())
return CMSGetImage.readPicture(newFilename);
try {
BufferedImage imgProfile = ImageIO.read(new File(mainImg));
Image imgScaledProfile = imgProfile.getScaledInstance(149, 149, Image.SCALE_SMOOTH);
URL overlayImage = new URL(overlayImgUrl);
BufferedImage imgOverlay = ImageIO.read(overlayImage);
BufferedImage imgOrgOverlay = ImageIO.read(overlayImage);
Graphics2D newGraphic = imgOverlay.createGraphics();
newGraphic.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER));
newGraphic.drawImage(imgScaledProfile, 6, 6, null);
newGraphic.drawImage(imgOrgOverlay, 0, 0, null);
newGraphic.dispose();
ImageIO.write(imgOverlay, "png", new File(newFilename));
log.debug("Returning: " + newFilename);
return CMSGetImage.readPicture(newFilename);
} catch (IOException e) {
log.error(e.getMessage(), e);
return null;
} catch(Exception e) {
log.debug("Catching all Exceptions: " + e.getMessage(), e);
return null;
}
Als NPE Exception kommt:
Code:
2010-09-29 10:42:55,208 [TP-Processor8] DEBUG com.mpass.cmsmobile.components.CMSGetImage - Catching all Exceptions: null
java.lang.NullPointerException
at javax.imageio.ImageIO.write(ImageIO.java:1523)
at com.mpass.cmsmobile.components.CMSGetImage.setOverlayImage(CMSGetImage.java:240)
at com.mpass.cmsmobile.components.CMSGetImage.getImage(CMSGetImage.java:181)
at com.mpass.apps.cmsmobile.servlets.CMSGetImage.doGet(CMSGetImage.java:60)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:619)
Die Variablen "mainImg" und "overlayImgUrl" sind richtig gesetzt - also nicht null. Sonst würde er ja nicht entsprechend soweit laufen.
Die Exception kommt aus der Zeile "ImageIO.write(imgOverlay, "png", new File(newFilename));" (hier Zeile 28).
Wie gesagt - die Methode läuft mehrmals täglich ohne Probleme durch. Erst nach einiger Laufzeit stellt er den Betrieb mit der NPE ein.
Für Ideen/Vorschläge/Verbesserungen bin ich jederzeit zu haben.

Danke für eure Hilfe schon mal.
Gruss,
Thomas