Страница 3 из 3

Картинка из буфера DIB

Добавлено: 28 Январь 2020, 12:13
Игорь Столяров
Дед Пахом писал(а): 28 Январь 2020, 11:06 Из памяти: Prop:ImageBits
Да ! Это то, что и хотелось (теперь уже мечталось). Но как-то оно странно работает.

Если загрузить в IMAGE картинку GIF, то Prop:ImageBits вернёт содержание файла GIF. OK !
Но если загрузить в IMAGE картинку BMP, то Prop:ImageBits ничего не возвращает.
Так, что даже негде посмотреть, какой именно формат Bitmap нужно подготовить для Prop:ImageBits ... :(

Картинка из буфера DIB

Добавлено: 28 Январь 2020, 12:28
Дед Пахом
Игорь Столяров писал(а): 28 Январь 2020, 12:13 какой именно формат Bitmap нужно подготовить для Prop:ImageBits
Если BMP файл загрузить в строку, а строку в ImageBits, то IMAGE покажет картинку.

Картинка из буфера DIB

Добавлено: 28 Январь 2020, 12:35
Игорь Столяров
Да. Я поэтому и написал, что нужно формировать в памяти полноценный BMP:
Игорь Столяров писал(а): 27 Январь 2020, 22:15 Задача трансформации 24-битного bitmap в 32-битный DIB с заголовком в памяти пока для меня нерешаема.

Картинка из буфера DIB

Добавлено: 28 Январь 2020, 12:44
Constantine
Дед Пахом писал(а): 28 Январь 2020, 12:28 Если BMP файл загрузить в строку, а строку в ImageBits, то IMAGE покажет картинку.
Аналогично, если правильный DIB загрузить в строку... Нужно только правильно посчитать размер...

Картинка из буфера DIB

Добавлено: 28 Январь 2020, 13:18
kreator
Игорь Столяров писал(а): 28 Январь 2020, 12:13 Так, что даже негде посмотреть, какой именно формат Bitmap нужно подготовить для Prop:ImageBits ... :(
На крайняк есть у меня формирование этого BitMap. Если надо, могу выложить. Не ахти что.

Картинка из буфера DIB

Добавлено: 28 Январь 2020, 14:07
vic7tar
Игорь Столяров писал(а): 27 Январь 2020, 9:51 Внешняя DLL формирует буфер с картинкой в обычном DIB формате
Зачем всех вводить в заблуждение, в буфере сидит только Bitmap (битовая карта, битовый массив, битовый вектор или как хочется).

Картинка из буфера DIB

Добавлено: 28 Январь 2020, 14:25
Constantine
Гм... Вообще-то DIB - это Device Independent Bitmap. Любые изображения Windows понимает только так...

Картинка из буфера DIB

Добавлено: 28 Январь 2020, 15:43
Игорь Столяров
vic7tar писал(а): 28 Январь 2020, 14:07 в буфере сидит только Bitmap (битовая карта, битовый массив, битовый вектор или как хочется).
Сам запутался с этими сложностями перевода. Здесь ведь как в той деревне, где всех звали Буратино …
DLL формирует bitmap, BMP - Microsoft Bitmap format, DIB - Device Independent Bitmap … :(

Картинка из буфера DIB

Добавлено: 28 Январь 2020, 15:54
Constantine
BMP = BITMAPFILEHEADER + BITMAPINFOHEADER + пиксели. Расширение файла - *.BMP.
DIB = BITMAPINFOHEADER + пиксели. Если записать на диск, расширение файла будет - *.DIB.
Если на пальцах, все изображения - bmp, png, wmf и т.п. в итоге превращаются в DIB.

Картинка из буфера DIB

Добавлено: 29 Январь 2020, 9:33
Игорь Столяров
Constantine писал(а): 28 Январь 2020, 15:54 BMP = BITMAPFILEHEADER + BITMAPINFOHEADER + пиксели. Расширение файла - *.BMP.
Спасибо за помощь, всё сделал. Отчёты без записи картинок в файлы на диск - просто летают. :)
Код в первом сообщении - абсолютно корректный, нужно было только научиться трансформировать Bitmap в BMP.
Но больше работать с картинками в памяти - ни в жись ! ;)

Картинка из буфера DIB

Добавлено: 29 Январь 2020, 9:37
Constantine
Пожалуйста!
Но и DIB из DC показать напрямую тоже можно... :-)
Удачи!