| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Создание BMP файла из массива байтов |
| Автор: bougle 2.5.2006, 15:45 | ||||
| Из сети принимается массив байтов. 152х200 точек 8-битного серого изображения. Нужно сохранить его в формате BMP Мое решение: Так как массив полностью идентичен растру BMP файла, то просто добавляю к нему заголовок BMP.
meta.dat - Сохраненный заголовок для BMP файла такого формата. raster.dat - Сохраненный битмап. finger.bmp - Полученный BMP файл. А как это сделать средствами java. Для создания объекта BufferedImage нужен объект WritableRaster. А как его создать из массива байтов?
Sets the data for a rectangle of pixels from a primitive array of type TransferType. В качестве Object inData можно поставить массив? |
| Автор: LSD 2.5.2006, 23:29 |
| Если у тебя уже есть заголовок, пиши в файл вначале его а затем дописывай байты с картинкой и все, в чем трудности? Зачем тебе нужно создавать BufferedImage из массива байт? |
| Автор: polosatij 3.5.2006, 02:00 | ||||
можно сделать так:
и потом поменять ассоциацию на .bmp с помощью:
можно создать Image и нарисовать его в BufferedImage pixels = это int[], т.е. то, что у тебя уже есть =) удачи |
| Автор: bougle 4.5.2006, 13:48 |
| polosatij, извини, не понятно. Оставлю как есть. Сегодня тестировали датчик. Приняли таки отпечаток пальца. Только вот на нем было некоторое количество малинового цвета. Мы с коллегой не поняли почему в картинке, которая должна быть серой по определению, появился цвет. К сожалению диска под рукой не оказалось и я сейчас не могу в спокойной обстановке рассмотреть файл. Сейчас вспомнил, что прозрачный цвет может отображаться малиновым. Никто не помнит, в стандартной палитре 8-битного серого BMP точка прозрачного цвета равена 255? *Ушел юзать поиск* |
| Автор: LSD 5.5.2006, 23:05 |
| BMP не поддерживает прозрачность, ни в каком виде. Если только программа просмотра так себя ведет, например считая цвет верхнего левого угла прозрачным (так ведет себя Delphi). |
| Автор: bougle 6.5.2006, 05:11 |
| Точно, поюзал поиск. Дело оказалось в другом. Просто я заголовок отрезал от существующего 256-цветного BMP файла. Файл то был не серый, а цветной. Вот и все чудеса. Сейчас пытался найти, как выглядит палитра 256-цветного серого BMP, но не могу найти даже на msdn. Не подскажете, как содать такую палитру? Или как создать такой BMP файл, а заголовок я вырежу для использования. |
| Автор: LSD 7.5.2006, 12:39 |
Можно в фотошопе, New Image - Grayscale, 8 bit. |
| Автор: bougle 8.5.2006, 02:26 |
| У меня 6-ой фотошоп. Он с BMP отказывается работать. Ладно, вот так выглядит изображение. http://bougle.narod.ru/COMBM0.jpg Только вот возникла проблема, что с датчика подключаемого через модем идут нереверсированные данные. В итоге изображение выглядит вот так: http://bougle.narod.ru/UDPimage7.jpg Сейчас создам тему про реверсию битов, это отдельный разговор. |
| Автор: LSD 8.5.2006, 11:36 | ||
Ну тогда так:
|
| Автор: bougle 9.5.2006, 03:04 |
| Угумс, я тоже об этом подумал, но сделал почему не так. Скачал ACDSee 3.1. Точно помнил, что она в 256 градаций серого BMP сохраняет. Какой-то у меня подход не програмерский. Всем спасибо за помощь! Надеюсь скоро сам буду писать ответы в помощь |