> `com.sun.javafx.iio.ImageStorage` currently ignores the MIME image subtype 
> specified for images encoded in data URIs. This should be improved as follows:
> 
> 1. If the specified image subtype is not supported, an exception will be 
> thrown.
> 2. If the specified image subtype is supported, but the data contained in the 
> URI is of a different (but also supported) image format, the image will be 
> loaded and a warning will be logged. For example, if the MIME type is 
> "image/jpeg", but the image data is PNG, the following warning will be 
> generated:
> 
> 
> Image format 'PNG' does not match MIME type 'image/jpeg' in URI 
> 'data:image/jpeg;base64,iVBORw0KGgoAAA...AAAElFTkSuQmCC'
> 
> 
> Also, the javadoc of `javafx.scene.image.Image` incorrectly states:
> 
>     94    * If a URL uses the "data" scheme, the data must be base64-encoded
>     95    * and the MIME type must either be empty or a subtype of the
>     96    * {@code image} type.
> 
> However, omitting the MIME type of a data URI is specified to imply 
> "text/plain" (RFC 2397, section 2). Since the `com.sun.javafx.util.DataURI` 
> class is implemented according to this specification, trying to load an image 
> without MIME type correctly fails with an `ImageStorageException`: 
> "Unexpected MIME type: text".
> 
> The solution is to fix the documentation:
> 
>       94    * If a URL uses the "data" scheme, the data must be base64-encoded
>     + 95    * and the MIME type must be a subtype of the {@code image} type.
>     - 95    * and the MIME type must either be empty or a subtype of the
>     - 96    * {@code image} type.

Michael Strauß has updated the pull request incrementally with one additional 
commit since the last revision:

  ImageStorage correctly handles MIME types in data URIs

-------------

Changes:
  - all: https://git.openjdk.java.net/jfx/pull/676/files
  - new: https://git.openjdk.java.net/jfx/pull/676/files/4abb9b47..73f1bb13

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jfx&pr=676&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=jfx&pr=676&range=00-01

  Stats: 152 lines in 9 files changed: 85 ins; 8 del; 59 mod
  Patch: https://git.openjdk.java.net/jfx/pull/676.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/676/head:pull/676

PR: https://git.openjdk.java.net/jfx/pull/676

Reply via email to