Создание файлов JPEG: преобразование кода с ограниченным доступом (JPEGImageEncoder) в «безопасный» код - PullRequest
2 голосов
/ 09 декабря 2010

Мне дали следующий код, и Eclipse пометил его (в строке JPEGImageEncoder) как ошибку (ограничение доступа). Я изменил параметры Eclipse, чтобы этот код компилировался, но я прочитал, что ошибка означает, что этот класс (JPEGImageEncoder) не может быть реализован какой-либо реализацией JRE (не Sun / Oracle).

Итак, каким должен быть код, который не будет иметь ограничений доступа, то есть полностью безопасный код для того же (создать изображение в формате JPG)?

BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(filename));
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
JPEGEncodeParam param = encoder.getDefaultJPEGEncodeParam(buffImage);
param.setQuality(0.8f, false);
encoder.encode(buffImage, param);

1 Ответ

3 голосов
/ 09 декабря 2010

Может быть, я неправильно понял, но если все, что вам нужно, это сохранить объект BufferedImage в формате jpeg, вы можете сделать это (начиная с Java 1.4 и далее):

ImageIO.write(bufferedImage,"jpg",file);

Вот ссылкас дополнительной информацией: http://download.oracle.com/javase/tutorial/2d/images/saveimage.html

Как вы можете видеть, он говорит, что JPEG, PNG, GIF, BMP и WBMP всегда будут поддерживаться.

Если вы хотите установить сжатие / качествоЭто немного больше работы, но не слишком много.Предполагая, что у вас есть bufferedImage и outFile:

IIOImage outputImage = new IIOImage(bufferedImage, null, null);

ImageWriter writer = ImageIO.getImageWritersByFormatName("jpeg").next();        
writer.setOutput(new FileImageOutputStream(outFile));
ImageWriteParam writeParam = writer.getDefaultWriteParam();
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionQuality(.75f); // float between 0 and 1, 1 for max quality.
writer.write( null, outputImage, writeParam);

(исправлено из предыдущего ответа)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...