I keep getting this error reading data from the blob.
[ERROR] createTiles(): Error: java.lang.IllegalArgumentException:
corruptJPEG
format
java.lang.IllegalArgumentException: corrupt JPEG format
atcom.google.appengine.api.images.ImageImpl.updateJpegDimensions(ImageImpl.java
:261)
atcom.google.appengine.api.images.ImageImpl.updateDimensions(ImageImpl.java
:146)
at com.google.appengine.api.images.ImageImpl.getWidth(ImageImpl.java:55)
atorg.gonevertical.core.server.service.image.Ga_Service_Image.createTiles(Ga_Service_Image.java
:250)
atorg.gonevertical.core.server.service.image.Ga_Service_Image.tileImage(Ga_Service_Image.java
:240)
atorg.gonevertical.core.server.service.image.Ga_Service_Image.tile(Ga_Service_Image.java
:229)
atorg.gonevertical.core.server.service.image.Ga_Service_Image.transform(Ga_Service_Image.java
:174)
atorg.gonevertical.core.server.servlet.Servlet_Task.startTransform(Servlet_Task.java
:127)
atorg.gonevertical.core.server.servlet.Servlet_Task.doGet(Servlet_Task.java
:84)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
511)
atorg.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java
:1166)
atcom.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java
:58)
atorg.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java
:1157)
atcom.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java
:43)
atorg.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java
:1157)
atcom.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java
:122)
atorg.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java
:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
atorg.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java
:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
atcom.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java
:70)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
atcom.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java
:351)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
542)
atorg.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java
:923)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
atorg.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java
:409)
atorg.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java
:582)
This is how I am reading the image bytes:
private byte[] getImageBytes(BlobData blobData) {
if (blobData == null) {
return null;
}
BlobKey blobKey = new BlobKey(blobData.getKey());
if (blobKey == null) {
return null;
}
int chunkSize = 1024;
long startIndex = 0;
long endIndex = chunkSize;
long filesize = blobData.getSize();
boolean theend = false;
ByteArrayOutputStream out = new ByteArrayOutputStream();
while (theend == false) {
if (endIndex == filesize) {
theend = true;
}
System.out.println("startIndex=" + startIndex + " endIndex=" +
endIndex);
byte[] b = blobstoreService.fetchData(blobKey, startIndex, endIndex);
try {
out.write(b);
} catch (IOException e) {
e.printStackTrace();
}
startIndex = startIndex + chunkSize;
endIndex = endIndex + chunkSize;
if (endIndex >filesize) {
endIndex = filesize;
}
}
byte[] filebytes = out.toByteArray();
return filebytes;
}
--
You received this message because you are subscribed to the Google Groups
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.