[appengine-java] Re: Cannot resize a .tif image using the ImagesService on the dev app server
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
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
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.