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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

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

Если загрузить в IMAGE картинку GIF, то Prop:ImageBits вернёт содержание файла GIF. OK !
Но если загрузить в IMAGE картинку BMP, то Prop:ImageBits ничего не возвращает.
Так, что даже негде посмотреть, какой именно формат Bitmap нужно подготовить для Prop:ImageBits ... :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

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

Сообщение Дед Пахом »

Игорь Столяров писал(а): 28 Январь 2020, 12:13 какой именно формат Bitmap нужно подготовить для Prop:ImageBits
Если BMP файл загрузить в строку, а строку в ImageBits, то IMAGE покажет картинку.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

Да. Я поэтому и написал, что нужно формировать в памяти полноценный BMP:
Игорь Столяров писал(а): 27 Январь 2020, 22:15 Задача трансформации 24-битного bitmap в 32-битный DIB с заголовком в памяти пока для меня нерешаема.
За теми кто отстал - не возвращаться. (С) Кодекс
Constantine
Активист
Сообщения: 185
Зарегистрирован: 07 Февраль 2017, 16:58

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

Сообщение Constantine »

Дед Пахом писал(а): 28 Январь 2020, 12:28 Если BMP файл загрузить в строку, а строку в ImageBits, то IMAGE покажет картинку.
Аналогично, если правильный DIB загрузить в строку... Нужно только правильно посчитать размер...
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

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

Сообщение kreator »

Игорь Столяров писал(а): 28 Январь 2020, 12:13 Так, что даже негде посмотреть, какой именно формат Bitmap нужно подготовить для Prop:ImageBits ... :(
На крайняк есть у меня формирование этого BitMap. Если надо, могу выложить. Не ахти что.
We are hard at work… for you. :)
Аватара пользователя
vic7tar
Ветеран
Сообщения: 365
Зарегистрирован: 09 Февраль 2017, 20:12

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

Сообщение vic7tar »

Игорь Столяров писал(а): 27 Январь 2020, 9:51 Внешняя DLL формирует буфер с картинкой в обычном DIB формате
Зачем всех вводить в заблуждение, в буфере сидит только Bitmap (битовая карта, битовый массив, битовый вектор или как хочется).
C10, Win10x64
Constantine
Активист
Сообщения: 185
Зарегистрирован: 07 Февраль 2017, 16:58

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

Сообщение Constantine »

Гм... Вообще-то DIB - это Device Independent Bitmap. Любые изображения Windows понимает только так...
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

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

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

Сообщение Constantine »

BMP = BITMAPFILEHEADER + BITMAPINFOHEADER + пиксели. Расширение файла - *.BMP.
DIB = BITMAPINFOHEADER + пиксели. Если записать на диск, расширение файла будет - *.DIB.
Если на пальцах, все изображения - bmp, png, wmf и т.п. в итоге превращаются в DIB.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7327
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

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

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

Сообщение Constantine »

Пожалуйста!
Но и DIB из DC показать напрямую тоже можно... :-)
Удачи!
Ответить