Поддерживает ли Java ImageIO (или любые другие обработчики изображений) формат изображения BI_RLE8? Единственное, что мне удалось найти, это BMPImageWriteParam, но я понятия не имею, как это использовать. Любая помощь будет замечательной.Java Bitmap Формат RLE8
ответ
См. this example, как писать, используя ImageWriter
и используя ImageWriteParam
(используйте ваш случай BMPImageWriteParam
). Прокрутите немного вниз, чтобы найти пример записи.
Вместо линии:
ImageWriteParam param = writer.getDefaultWriteParam();
Вы должны вставить что-то вроде:
BMPImageWriteParam param = new BMPImageWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionType("BI_RLE8");
Вы можете безопасно передать null
для эскизов и метаданных (...
в примере).
Если вы хотите сохранить изображение с помощью настраиваемых параметров, вам необходимо использовать ImageWriter
, с помощью которого вы можете передавать пользовательские параметры для записи выходного файла.
Вы можете получить параметры из ImageWriter
используя его метод getDefaultWriteParam()
, где вы можете установить тип сжатия. Вам даже не нужно указывать его на BMPImageWriteParam
, потому что настройка типа сжатия доступна через супер-интерфейс ImageWriter
.
Обратите внимание, что для использования пользовательского типа сжатия вам необходимо установить режим сжатия ImageWriteParam.MODE_EXPLICIT
.
Вот полный код:
BufferedImage bi = new BufferedImage(200, 100, BufferedImage.TYPE_BYTE_INDEXED);
ImageWriter writer = ImageIO.getImageWritersByFormatName("bmp").next();
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionType("BI_RLE8");
writer.setOutput(new FileImageOutputStream(new File("test.bmp")));
writer.write(null, new IIOImage(bi, null, null), param);
writer.dispose();
Обратите внимание, что BI_RLE8
сжатие не доступно для всех типов BufferedImage
с.
Для exmaple BI_RLE8
сжатия поддерживается для BufferedImage.TYPE_BYTE_INDEXED
и BufferedImage.TYPE_BYTE_GRAY
, но это не поддерживается для BufferedImage.TYPE_3BYTE_BGR
и в этом случае IOException
будет выброшен методом ImageWriter.write()
(который на самом деле BMPImageWriter.write()
).
- 1. Java Android Bitmap ссылки
- 2. Java BufferedImage/Android Bitmap
- 3. Java Blackberry Bitmap Нажмите
- 4. Java bitmap compositing как
- 5. Bitmap vs другой формат для управления (C#)
- 6. Компонент Java Paint в bitmap
- 7. Вызов Bitmap класса в Java
- 8. String to Bitmap java/android
- 9. Java Bitmap изменение цветового тона
- 10. Преобразование байтового массива в bitmap дает bitmap = null в java
- 11. HBITMAP * Bitmap to .net Bitmap
- 12. Bitmap bitmap = BitmapFactory.decodeResource (this.getResources(), R.drawable.picture1
- 13. Найти формат изображения с использованием объекта Bitmap в C#
- 14. Как установить bitmap на ImageView java android
- 15. Отправить Java BufferedImage для Bitmap Android
- 16. imageView.setImageResource (int resId) vs. imageView.setImageBitmap (Bitmap bitmap);
- 17. Bitmap - Base64 String - Bitmap преобразование андроида
- 18. Bitmap to byte [] to Bitmap без сжатия
- 19. Null bitmap: View.getDrawingCache() дает Null bitmap
- 20. Преобразовать непреложный файл Bitmap в изменяемом Bitmap
- 21. android convert bitmap to ascii bitmap
- 22. Bitmap b = (Bitmap) bundle.get ("data"); путаница, андроид
- 23. camera2 output to Bitmap
- 24. Bitmap LockBits на Android?
- 25. Формат Java Calendar variable
- 26. формат даты в java
- 27. Формат Java Long
- 28. Java - SimpleDateFormat неправильный формат
- 29. Изменить формат даты Java
- 30. Число Java формат
Используйте 'setCompressionType()' с типом, который вы хотите. Все перечисленные 4 типа поддерживаются, как указано в документации – nhahtdh
. Я удалил ваше сообщение «спасибо» - новый и новый вопрос. Вы выражаете благодарность, предлагая полезные ответы и принимая лучший ответ. Если у вас есть новый или последующий вопрос, пожалуйста, создайте новый вопрос; если вы считаете это актуальным, добавьте ссылку на этот вопрос. –