«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему все байты в моем буфере равны 0 после вызова copyPixelsToBuffer() для растрового изображения?

Почему все байты в моем буфере равны 0 после вызова copyPixelsToBuffer() для растрового изображения?

Опубликовано 25 ноября 2024 г.
Просматривать:655

Why are all bytes in my buffer 0 after calling copyPixelsToBuffer() on a Bitmap?

Java: преобразование растрового изображения в байтовый массив

При попытке преобразовать растровый объект в байтовый массив с помощью предоставленного кода пользователи могут столкнуться с проблема, из-за которой все байты в буфере остаются равными 0 после вызова copyPixelsToBuffer(). Несмотря на неизменность растрового изображения, возвращаемого с камеры, это не должно влиять на процесс копирования.

Потенциальная основная причина:

Фрагмент кода использует класс ByteBuffer для выделения памяти и копирования растрового изображения. пикселей в буфер. Однако он напрямую обращается к базовому буферу без правильной установки его смещения. Это может привести к тому, что метод get() вернет только 0 значений.

Решение:

Чтобы устранить эту проблему, рассмотрите возможность использования следующего подхода:

Bitmap bmp = intent.getExtras().get("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
bmp.recycle();

В этом улучшенном коде:

  • Поток ByteArrayOutputStream создается, который можно использовать для захвата данных для преобразования в массив байтов.
  • Метод compress() вызывается для объекта Bitmap для преобразования его пикселей в формат PNG и записи их в файл. ByteArrayOutputStream.
  • Наконец, метод toByteArray() преобразует содержимое ByteArrayOutputStream в массив байтов.

Используя этот подход, вы можете эффективно преобразовать объект Bitmap в массив байтов без возникла проблема с переполнением буфера.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3