У меня есть этот метод, который преобразует изображение в массив байтов.Не удается заставить метод работать
public byte[] imageToCompressedByteArray(Image image) throws IOException {
//load the image
String f = "C:\\Users\\mamed\\Documents\\NetBeansProjects\\Main\\src\\resources\\accept.png";
image = ImageIO.read(new FileInputStream(new File(f)));
// get image size
int width = image.getWidth(null);
int height = image.getHeight(null);
try {
int[] imageSource = new int[width * height];
PixelGrabber pg = new PixelGrabber(image, 0, 0, width, height, imageSource, 0, width);
pg.grabPixels();
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
GZIPOutputStream zippedStream = new GZIPOutputStream(byteStream);
ObjectOutputStream objectStream = new ObjectOutputStream(zippedStream);
objectStream.writeShort(width);
objectStream.writeShort(height);
objectStream.writeObject(imageSource);
objectStream.flush();
objectStream.close();
return byteStream.toByteArray();
}
catch (Exception e) {
throw new IOException("Error storing image in object: " + e);
}
}
Однако, я не могу получить эту работу, я имею в виду, он не может загрузить изображение и преобразовать его, и я не иметь представление о том, что проблема может быть ,
Используйте отладчик и попытайтесь выяснить, в какой строке проблема ... открыт ли файл? Правильно ли инициализированы потоки? – giorashc
Нам нужно больше ввода: stacktrace? какая ошибка происходит? как вы можете сказать, что это не работает –
Я действительно сомневаюсь, что сжатие GZIP изображения более эффективно, чем сжатие PNG. Вам лучше оставить свои изображения такими, как есть. –