Как вернуть размер изображения в байтах?

200
23 апреля 2018, 00:24

Задача: разбить изображение на несколько частей по 200кб. Чтобы знать, сколько должно быть таких частей, нужно знать размер изображения. Есть ли что-то вроде sizeOf, только применимое для BufferedImage?
Я думал насчёт ширина * высота * глубина кодирования, но в изображение на деле весит больше, чем это значение

Answer 1

Изначально вы должны записать ваш файл в память или временный файл. Вот один из вариантов.

BufferedImage img = YOUR_IMAGE_THERE
ByteArrayOutputStream tmp = new ByteArrayOutputStream();
ImageIO.write(img, "png", tmp);
tmp.close();
Integer contentLength = tmp.size();
Answer 2

Получаем размер изображения в байтах:

BufferedImage image = /* */;
int sizeInBytes = image.getData().getDataBuffer().getSize();

Или с помощью примера в другом ответе, можно будет узнать размер изображения в конкретном формате, в котором вы его сохраните.

READ ALSO
Как создать несколько таблиц в Sqlite android?

Как создать несколько таблиц в Sqlite android?

Есть уже бд с таблицей Tasks(uuid, name, date, list(только что добавил столбец))Я хочу сделать, чтобы в последнем был uuid из другой таблицы Lists, где есть много...

188
Java FX вывести значение из TextField в консоль

Java FX вывести значение из TextField в консоль

Не пойму почему не работает

202
Создание копии существующего списка

Создание копии существующего списка

Добрый деньИмеется заполненный ArrayList (например list1)

197
WebServices Apache Axis не работает сериализация

WebServices Apache Axis не работает сериализация

На серверной части имеется класс с данными о клиенте

294