Я читаю изображения с разных URL-адресов. И некоторые из них превратились в очень интересную задачу.
Полная ошибка: javax.imageio.IIOException: Invalid icc profile: invalid number of icc markers
Некоторый код, но я уверен, что это мало поможет:
URLConnection wat = new URL(strurl).openConnection();
wat.setRequestProperty("User-Agent", userAgent);
InputStream in = null;
try {
in = wat.getInputStream();
} catch(FileNotFoundException e) {
e.printStackTrace();
Logger.getLogger().logException(e);
}
if(in == null) continue;
ByteArrayOutputStream outArray = new ByteArrayOutputStream();
byte[] bytes = new byte[50000];
int bytesRead;
while((bytesRead = in.read(bytes, 0, bytes.length)) > 0) {
outArray.write(bytes, 0, bytesRead);
bytesRead = 0;
}
in.close();
String format = getFileFormat(outArray.toByteArray());
in = new ByteArrayInputStream(outArray.toByteArray());
BufferedImage image = null;
try {
image = ImageIO.read(in);
} catch(IOException e) {
e.printStackTrace();
Logger.getLogger().logException(e);
}
Сначала я читаю байты, чтобы определить, какой это тип файла.
Это фото, которое, кажется, вызывает это исключение: " rel="nofollow">http://www.loupiote.com/photos_l/3215396684-khmer-goddess-stone-statue-wat-phu-champasak-laos.jpg
Странно, я не мог найти никакой информации об этой ошибке.
РЕДАКТИРОВАТЬ: на самом деле это не решение, но поскольку я сохранял эти файлы, я прекратил создание BufferedImage
и просто «сбросил» эти байты в файл.