> `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 either be empty or a subtype of the > - 96 * {@code image} type. > + 95 * and the MIME type must be a subtype of the {@code image} type. > + 96 * The MIME type must match the image format of the data contained > in > + 97 * the URL. In case of a mismatch between MIME type and image > format, > + 98 * the image will be loaded if the image format can be determined > by > + 99 * JavaFX, and a warning will be logged.
Michael Strauß has updated the pull request incrementally with one additional commit since the last revision: revert code change ------------- Changes: - all: https://git.openjdk.java.net/jfx/pull/676/files - new: https://git.openjdk.java.net/jfx/pull/676/files/4cb5678a..35a41e06 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=jfx&pr=676&range=04 - incr: https://webrevs.openjdk.java.net/?repo=jfx&pr=676&range=03-04 Stats: 3 lines in 1 file changed: 0 ins; 2 del; 1 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