Поведение ImageIO.write отличается в зависимости от типов формата, даже если они являются допустимыми авторами - PullRequest
0 голосов
/ 18 апреля 2020

, поэтому я преобразую изображение tiff с помощью ImageIO и наблюдаю странное поведение, когда изображение преобразуется нормально для одних типов, но не для других, и это не всегда так, некоторые изображения преобразуют raw или bmp, а другие - нет, даже если все изображения из одного и того же источника.

byte[] imageByteArray = Base64.getMimeDecoder().decode(imgData);
BufferedImage decodedImg = ImageIO.read(new ByteArrayInputStream(imageByteArray));
ImageIO.write(decodedImg, format, os);
String encodedString = Base64.getEncoder().encodeToString(os.toByteArray());

Вывод для допустимых типов: System.out.println(Arrays.toString(ImageIO.getWriterFormatNames()));

[JPEG 2000, JPG, jpg, JPEG2000, tiff, bmp, BMP, gif, GIF, WBMP, png, PNG, raw, RAW, JPEG, pnm, PNM, tif, TIF, TIFF, jpeg2000, wbmp, jpeg, jpeg 2000]

Форматы, которые работают: [jpg, JPG, JPEG, tiff, TIF, tif, TIFF, png, gif, GIF, jpeg]

Форматы, которые НЕ работают: [JPEG2000, JPEG 2000, raw, RAW, pnm, PNM, jpeg2000, jpeg 200]

Форматы, которые «работают», но возвращают false: [wbmp, WBMP, bmp, BMP] Для них я могу получить данные изображения, такие как высота, от decodedImg.getHeight()

...