Looking at the AnnotationMethodHandler.writeWithmessageConverters() (line: 972). The code loops through each of the acceptedMediaTypes asking the messageConverter if it canWrite(). Using an example acceptedMediaTypes from Firefox would look like:
Each of the mediaTypes would be passed to the canWrite() and returned as false as it isn't within:
Which is returned by the ImageIO.getWriterMIMETypes().
Now looking at the BufferedImageHttpMessageConverter there is the ability to specify the defaultContentType to use when no contentType is provided to the write() method. Unfortunately this method never gets called with the MediaType as null. To improve the BufferedImage converter it would make sense to have the isWriteable(MediaType) check for MediaType.ALL. Then within the write() method of the BufferedImageHttpMessageConverter it would use the defaultContentType when passed in a MediaType.ALL.
This method looks very similar to the AbstractHttpMessageConverter.canWrite(MediaType) except that it compares the mediaType to the ImageIO available MIME types instead of the supportedMediaTypes.
Sorry for not having the source code checked out to be able to provide a patch file.