I see a post from Nick Johnson of Google on StackOverflow.com dated
6th July 2010 about plug-ins. He said:

  "You're trying to work with 'ico' and 'tif' images. Neither of these
are supported on App Engine - only JPG, PNG and GIF."


The GAE/J documentation "Images Java API Overview" at:

  
http://code.google.com/intl/en/appengine/docs/java/images/overview.html#Image_Formats

states that:

  "The service accepts image data in the JPEG, PNG, GIF (including
animated GIF), BMP, TIFF and ICO formats."


Does this GAE/J documentation need to be corrected?


On Dec 17, 7:35 am, Ian Marshall <[email protected]> wrote:
> No ideas, anyone?
>
> On Dec 16, 11:59 am, Ian Marshall <[email protected]> wrote:
>
> > 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/th...
>
> > 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 [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.

Reply via email to