I refer to the related post entitled "WARNING: No image reader found
for format "ico". An ImageIO plugin must be installed to use this
format with the DevAppServer." dated 7th June 2009 at:

http://groups.google.com/group/google-appengine-java/browse_thread/thread/7a44035eea5b1f4d/5fcd8b0a21f41db3?lnk=gst&q=WARNING%3A+No+image+reader+found+for+format+%22ico%22.+An+ImageIO+plugin+must+be+installed+to+use+this+format+with+the+DevAppServer#5fcd8b0a21f41db3


where a query about the dev app server warnings below was raised, but
after Jason of Google asked a supplementary question he received no
response from the original poster.

My web app uploads an image file from a web browser user and then, if
the file is larger than around 900kB I use the GAE/J ImagesService to
reduce the image data size to this level. An extract of my relevant
code is:

        byte[] baImageSource = [...];    // Data from an uploaded image file
        int nNewWidth  = [...];          // Calculate correct shrinkage
        int nNewHeight = [...];          // Calculate correct shrinkage

        Image imgSource = ImagesServiceFactory.makeImage(baImageSource);
        ImagesService isService = ImagesServiceFactory.getImagesService();
        Transform tfrm = ImagesServiceFactory.makeResize(nNewWidth,
nNewHeight);
        Image imgNew = isService.applyTransform(tfrm, imgSource);
        byte[] baResult = imgNew.getImageData();    // The shrunken image
data


When I run my ImagesService code on my GAE/J development server
((latest) version 1.4.0) I get the two warnings:

        16-Dec-2010 10:40:18
com.google.appengine.api.images.dev.LocalImagesService init
        WARNING: No image reader found for format "ico". An ImageIO plugin
must be installed to use this format with the DevAppServer.

        16-Dec-2010 10:40:18
com.google.appengine.api.images.dev.LocalImagesService init
        WARNING: No image reader found for format "tif". An ImageIO plugin
must be installed to use this format with the DevAppServer.


My code runs well for shrinking .jpg files, but when I try this for
a .tif file of size 6.11 MB I get an IllegalArgumentException on my
call to ImagesService.applyTransform(...). (I set out a stack trace at
the foot of this post.)

I have a few questions for those interested:

  ·  How do I get a "tif" ImageIO plug-in for the ImagesService ()?
  ·  Should this plug-in be supplied with the GAE/J SDK in future
releases?
  ·  Does this issue apply to the dev app server only (I have not yet
deployed this to production)?

Cheers,

Ian Marshall



STACK TRACE WHEN TRANSFORMING A .TIF FILE
-----------------------------------------
java.lang.IllegalArgumentException: Failed to read image
at
com.google.appengine.api.images.ImagesServiceImpl.convertApplicationException(ImagesServiceImpl.java:
301)
at
com.google.appengine.api.images.ImagesServiceImpl.applyTransform(ImagesServiceImpl.java:
73)
at
com.google.appengine.api.images.ImagesServiceImpl.applyTransform(ImagesServiceImpl.java:
50)
at
com.google.appengine.api.images.ImagesServiceImpl.applyTransform(ImagesServiceImpl.java:
39)
at [my package
path].business.MiscellaneousBusiness.compressImage(MiscellaneousBusiness.java:
311)
at [my package
path].business.MiscellaneousBusiness.compressImage(MiscellaneousBusiness.java:
236)
at [my package path].wicket.stuff.MyPage$5.onSubmit(MyPage.java:1348)
at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:
1561)
at org.apache.wicket.markup.html.form.Form.process(Form.java:958)
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:
920)
at java.lang.reflect.Method.invoke(Unknown Source)
at
com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:
100)
at
org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:
182)
at
org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:
73)
at
org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:
92)
at
org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:
1250)
at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1436)
at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
at
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:
486)
at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:
319)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
58)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:
43)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at
com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:
122)
at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1157)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
388)
at
org.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)
at
com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:
70)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
152)
at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:349)
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)
at org.mortbay.jetty.HttpConnection
$RequestHandler.content(HttpConnection.java:938)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
409)
at org.mortbay.thread.QueuedThreadPool
$PoolThread.run(QueuedThreadPool.java:582)

-- 
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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to