Здравствуйте.
Пришлось раскрыть метод ImageIO.read(ImageInputStream stream), чтобы сделать свою проверку формата файла. Но почему тут используется метод
| Код | reader.setInput(stream, true, true);
|
с тремя параметрами и
| Код | bi = reader.read(0, param);
|
с 2мя параметрами?
Чем отличается от варианта с одним параметром.
И есть такой код. Сожержит ли он потенциальные ошибки? Вопросы к коде в коментариях.
| Код | bi = reader.read(0, param); int biHeight = bi.getHeight(); int biWidth = bi.getWidth();
if (biHeight == 0) throw new InvalidPhotoException(InvalidPhotoException.ERR_ZERO_HEIGHT); if (biWidth == 0) throw new InvalidPhotoException(InvalidPhotoException.ERR_ZERO_WIDTH);
double scalex = (double) scaledHeight / bi.getHeight(); double scaley = (double) scaledWidth / bi.getWidth(); double scale = Math.min(scalex, scaley);
//Какое округление используется при операции (int). Это округление приводит к корректным размерам картинки? BufferedImage outImage = new BufferedImage((int) (bi.getWidth() * scale), (int) (bi.getHeight() * scale), BufferedImage.TYPE_INT_RGB); Graphics2D g = outImage.createGraphics(); //Что делает эта операция в этом месте? g.setComposite(AlphaComposite.Src); //Здесь не нарушаются пропорции картинки? g.drawImage(bi, 0, 0, scaledWidth, scaledHeight, null); g.dispose(); writer.write(outImage);
|
|