У меня есть функция в Java, которая использует ImageIO.read()
для чтения файла и обнаружить, если его полностью прозрачным:ImageIO не анализирует правильные .png правильно?
private static boolean isFullyAlpha(File f) throws IOException {
BufferedImage img = ImageIO.read(f);
for (int y = 0; y < img.getHeight(); y++) {
for (int x = 0; x < img.getWidth(); x++) {
if (((img.getRGB(x, y) >> 24) & 0xFF) != 0) {
println(f.name + " " + ((img.getRGB(x, y) >> 24) & 0xFF) + " " + x + " " + y)
return false;
}
}
}
return true;
}
Если я стараюсь читать очень простой файл, который был создан с помощью функции Convert ImageMagick путем кадрирования изображения его возвращает, что первый пиксель этого изображения имеет 255 альфа (вообще не прозрачен), тогда как он работает для других изображений.
Файл, который является неправильным с ImageIO: https://dl.dropboxusercontent.com/u/9186429/imageTest/mountainMap41.png
ли в Java ImageIO глючит? Если да, то какая библиотека могла бы правильно разобрать это изображение? Редакторы изображений, такие как Paint.NET или Gimp, правильно интерпретируют это изображение.
Примечание: Файл правильно проанализирован с помощью этой функции:
https://dl.dropboxusercontent.com/u/9186429/imageTest/mountainMap305.png