On Tue, 23 Nov 2021 05:50:33 GMT, Michael Strauß <mstra...@openjdk.org> wrote:
>> `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 > 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' > ``` This seems like an odd behavior to me, but if this is common practice among browsers, then it seems OK for us to do the same. In this case, it should be documented in the class docs of `Image`. ------------- PR: https://git.openjdk.java.net/jfx/pull/676