У меня есть проблемы при чтении этого файла JPEG с помощью ImageIO.read (Файл файла) - он выдает исключение с сообщением "Неподдерживаемый Тип изображения".
Я попробовал другие изображения JPEG, и они, кажется, хорошо работают.
Единственное различие, которое я смог определить, - то, что этот файл, кажется, включает миниатюру - который, как известно, вызывает проблемы с ImageIO.read ()?
Править:
Добавленный получающееся изображение:
Ваше изображение "Цветовая модель" - CMYK, JPEGImageReader
(внутренний класс, который считывает ваш файл) читает только цветовую модель RGB.
Если вы настаиваете на чтении изображений CMYK, то вам нужно будет преобразовать их, попробуйте этот код.
UPDATE
Чтение изображения CMYK в RGB BufferedImage.
File f = new File("/path/imagefile.jpg");
//Find a suitable ImageReader
Iterator readers = ImageIO.getImageReadersByFormatName("JPEG");
ImageReader reader = null;
while(readers.hasNext()) {
reader = (ImageReader)readers.next();
if(reader.canReadRaster()) {
break;
}
}
//Stream the image file (the original CMYK image)
ImageInputStream input = ImageIO.createImageInputStream(f);
reader.setInput(input);
//Read the image raster
Raster raster = reader.readRaster(0, null);
//Create a new RGB image
BufferedImage bi = new BufferedImage(raster.getWidth(), raster.getHeight(),
BufferedImage.TYPE_4BYTE_ABGR);
//Fill the new image with the old raster
bi.getRaster().setRect(raster);
ОБНОВЛЕНИЕ - Март 2015 - Добавление имитационных изображений
Исходные изображения были удалены из dropbox OP. Поэтому я добавляю новые изображения (не оригиналы), которые имитируют проблему, которая с ними происходила.
Первое изображение — это то, как выглядит обычное RGB-изображение.
Второе изображение — это то, как будет выглядеть одно и то же изображение в цветовой модели CMYK.
Вы не можете увидеть, как он выглядит в Интернете, потому что он будет преобразован в RGB хостом. Чтобы точно увидеть, как он выглядит, возьмите RGB-образ и запустите его через конвертер RGB в CMYK.
Третье изображение — это то, как будет выглядеть изображение CMYK при чтении, а затем написании с использованием Java ImageIO.
Проблема, которая происходила с OP, заключалась в том, что у них было что-то вроде изображения 2, которое выдает исключение, когда вы пытаетесь его прочитать.