[MGNLIMG-89] BMP file types are not being displayed as images on a page Created: 24/Oct/11 Updated: 23/Dec/11 Resolved: 14/Dec/11 |
|
| Status: | Closed |
| Project: | Imaging |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.1.1 |
| Type: | Bug | Priority: | Major |
| Reporter: | Rory Gibson | Assignee: | Ondrej Chytil |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
||||||||||||||||||||
| Issue Links: |
|
||||||||||||||||||||
| Template: |
|
||||||||||||||||||||
| Acceptance criteria: |
Empty
|
||||||||||||||||||||
| Task DoD: |
[ ]*
Doc/release notes changes? Comment present?
[ ]*
Downstream builds green?
[ ]*
Solution information and context easily available?
[ ]*
Tests
[ ]*
FixVersion filled and not yet released
[ ] 
Architecture Decision Record (ADR)
|
||||||||||||||||||||
| Bug DoR: |
[ ]*
Steps to reproduce, expected, and actual results filled
[ ]*
Affected version filled
|
||||||||||||||||||||
| Date of First Response: | |||||||||||||||||||||
| Description |
|
A paragraph of text has been created that features a .bmp image file. Currently this type of image is not being displayed on the page and instead the user is being shown 'image' text indicating that an incorrect file type is being used. Steps to reproduce:
Its expected that the .bmp image is shown on the page as this is a valid image file type. Instead the 'image' alt text is displayed indicating that an incorrect file type is used. |
| Comments |
| Comment by Magnolia International [ 10/Nov/11 ] |
|
Rory, I suspect this is actually limited by the imaging module at the moment. I'd have to check... but perhaps you have a stacktrace that would give us some hints ? |
| Comment by Rory Gibson [ 17/Nov/11 ] |
java.lang.RuntimeException: java.lang.IllegalStateException: Unexpected and unhandled exception: Can't find ImageWriter for bmp
at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:159)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:60)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:75)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.module.extendedtemplatingkit.filters.MultiSiteFilter.doFilter(MultiSiteFilter.java:94)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:64)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:88)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:60)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at com.technophobia.magnolia.filters.RequestParameterFettlingFilter.doFilter(RequestParameterFettlingFilter.java:54)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at com.technophobia.magnolia.filters.AbstractAuditFilter.doFilter(AbstractAuditFilter.java:48)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at com.technophobia.magnolia.filters.AbstractAuditFilter.doFilter(AbstractAuditFilter.java:48)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:85)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:51)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.CosMultipartRequestFilter.doFilter(CosMultipartRequestFilter.java:86)
at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:60)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:102)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:120)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:66)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:105)
at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:216)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.IllegalStateException: Unexpected and unhandled exception: Can't find ImageWriter for bmp
at info.magnolia.imaging.caching.CachingImageStreamer.unwrapRuntimeException(CachingImageStreamer.java:217)
at info.magnolia.imaging.caching.CachingImageStreamer.unwrapRuntimeException(CachingImageStreamer.java:214)
at info.magnolia.imaging.caching.CachingImageStreamer.serveImage(CachingImageStreamer.java:116)
at info.magnolia.imaging.ImagingServlet.doGet(ImagingServlet.java:62)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:119)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:84)
at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:66)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.cms.filters.VirtualUriFilter.doFilter(VirtualUriFilter.java:69)
at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:88)
at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:82)
at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:57)
at info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:65)
at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:147)
... 57 more
Caused by: java.lang.IllegalStateException: Can't find ImageWriter for bmp
at info.magnolia.imaging.DefaultImageStreamer.write(DefaultImageStreamer.java:58)
at info.magnolia.imaging.DefaultImageStreamer.serveImage(DefaultImageStreamer.java:49)
at info.magnolia.imaging.caching.CachingImageStreamer.generateAndStore(CachingImageStreamer.java:171)
at info.magnolia.imaging.caching.CachingImageStreamer$1.apply(CachingImageStreamer.java:96)
at info.magnolia.imaging.caching.CachingImageStreamer$1.apply(CachingImageStreamer.java:93)
at com.google.common.collect.MapMaker$StrategyImpl.compute(MapMaker.java:592)
at com.google.common.collect.MapMaker$StrategyImpl.compute(MapMaker.java:462)
at com.google.common.collect.CustomConcurrentHashMap$ComputingImpl.get(CustomConcurrentHashMap.java:2045)
at info.magnolia.imaging.caching.CachingImageStreamer.serveImage(CachingImageStreamer.java:113)
... 75 more
|
| Comment by Rory Gibson [ 17/Nov/11 ] |
|
Sorry, duplicated comment removed. |
| Comment by Rory Gibson [ 17/Nov/11 ] |
|
Further investigation indicates this is caused by line 56 of DefaultImageStreamer failing to load any ImageWriters for the format and ImageTypeSpecifier; looks like the BufferedImage conatins a Raster, which contains a SampleModel, and the numBands in the SampleModel (4) is incompatible with the BMP image writer supplied by Sun. Still investigating. |
| Comment by Magnolia International [ 01/Dec/11 ] |
|
Rory, just out of curiosity: do you actually want to output BMPs ? I can see how it's useful to be able to use ~anything as input (i.e no need for editors to know what formats are supported or how to convert), but in terms of output, if we're targeting the web, is there any use to anything else than gif, jpeg and png ? |
| Comment by Rory Gibson [ 01/Dec/11 ] |
|
Hi Grégory |
| Comment by Magnolia International [ 02/Dec/11 ] |
|
Can't recall the details on top of my head, but I think the ETK/STK integration does something to the output format so that it matches the input. In Imaging's "standalone" configuration, you can specify the output format. I'd imagine the two approaches would be combinable in a "web-friendly" one, where input format would be used for gif/jpeg/png, and we'd fallback to a default (png?) for other input formats. |
| Comment by Jan Haderka [ 13/Dec/11 ] |
|
I believe you are referring to |