[appengine-java] Re: Cannot resize a .tif image using the ImagesService on the dev app server

2010-12-17 Thread Ian Marshall
I can confirm that my testing on the GAE/J dev app server has revealed
that its images service can process formats as follows:

  JPG:  Yes
  PNG:  Yes
  GIF:  Yes
  ICO:  No
  TIFF: No
  BMP:  Yes.

Would Google consider updating their images service documentation?

Regards,

Ian Marshall


On Dec 17, 3:43 pm, Ian Marshall  wrote:
> 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.ht...
>
> 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  wrote:
>
> > No ideas, anyone?
>
> > On Dec 16, 11:59 am, Ian Marshall  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.jav

[appengine-java] Re: Cannot resize a .tif image using the ImagesService on the dev app server

2010-12-17 Thread Ian Marshall
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  wrote:
> No ideas, anyone?
>
> On Dec 16, 11:59 am, Ian Marshall  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.

[appengine-java] Re: Cannot resize a .tif image using the ImagesService on the dev app server

2010-12-16 Thread Ian Marshall
No ideas, anyone?


On Dec 16, 11:59 am, Ian Marshall  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.