|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
Как сохранить картинку в файл BMP или байтовый массив из Picture1.hdc21.01.2025, 05:56. Показов 8489. Ответов 82
Метки нет (Все метки)
Как сохранить картинку в файл BMP или байтовый массив из Picture1.hdc
Может быть уже есть такая удобная функция, которая бы принимала в качестве параметра Picture1.hdc и/или Picture1.Image.handle и сохраняла бы картинку, не в битовую карту, а именно в файл BMP со всеми заголовками BMP. Мне просто интересно, так сказать исходный код для сохранения картинки в BMP. Я сегодня кое что нашёл в Интернете для этих целей, но этого не достаточно. Добавлено через 7 минут Вот тут интересно очень почитать можно: https://moddb.fandom.com/wiki/... nformation Добавлено через 11 минут Вообще я знаю как очень легко сохранить Picture, но мне хотелось бы сохранить не Picture, а то что находится в hdc Именно в файл!!! А не в битовую карту через GetDIBits.
0
|
|
| 21.01.2025, 05:56 | |
|
Ответы с готовыми решениями:
82
Сохранить картинку из DOC файла в другой файл jpg или bmp VBA
|
| 22.01.2025, 15:30 | ||
|
0
|
||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||||||||||||||||
| 22.01.2025, 15:52 [ТС] | |||||||||||||||||
|
testuser2, это вместо того чтобы признать, что ты был неправ)))
Добавлено через 1 минуту Добавлено через 32 секунды А теперь мне нужно из этой структуры получить байтовый массив без этих 00 00 Добавлено через 1 минуту
Короче про CopyMemory без разницы копирую я использую Len или LenB всё равно блин всовывает эти 00 00 Добавлено через 48 секунд По сути наверное эти 00 00 они наверное итак содержатся в памяти мне кажется, вроде как после Integer в структуре 00 00 подсовывается незаметно так Добавлено через 2 минуты Вопрос у меня простой: как скопировать структуру в байтовый массив
Добавлено через 1 минуту И вообще нахрена оно вставляет два лишних байта? Добавлено через 2 минуты Это конечно бред но на ум приходит только копировать сначала bfType потом bfSize и так далее Добавлено через 40 секунд А может без CopyMemory обычным присвоением вообще "скопировать" байты? Добавлено через 43 секунды Не, обычным присвоение точно не получится, так как в массиве байт идут As Byte позиции а не As Integer Добавлено через 2 минуты Я провёл эксперемент и решил выяснить значения VarPtr(FileHeader.bfType) и сразу следующей переменной VarPtr(FileHeader.bfSize) и выяснилось что разница на 4 а не на 2 нахрена ОНО так делает я не понимаю Добавлено через 4 минуты Всё! Я придумал как по хитрому скопировать эту структуру правильно, вот так вот:
Через 2 CopyMemory только. Одним CopyMemory не получится)
0
|
|||||||||||||||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||||
| 22.01.2025, 15:57 [ТС] | ||||||
|
Я не понимаю только почему сохранение в файл работает корректно одной строчкой кода и вырезает эти два лишних нуля
Добавлено через 1 минуту Структуру BITMAPFILEHEADER я уже перегнал в обычный байтовый массив вот так вот (с вырезанием лишних 00 00):
0
|
||||||
| 22.01.2025, 15:57 | |
|
Т.е., зная где начинается хедер, надо сначала считать хедер, а потом уже там как-то из хедера берется смещение, по которому находятся данные и читать уже по этому смещению данные в байтовый массив. Но это там похоже вроде на мозгодрочку, ведь форматы bmp бывают разные, там какие-то палитры ни палитры, я бы не стал связываться
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||
| 22.01.2025, 16:01 [ТС] | ||||
|
Добавлено через 54 секунды Байтовый массив для меня - это не битовая карта, а полностью весь файл BMP Добавлено через 48 секунд Добавлено через 27 секунд
1
|
||||
| 22.01.2025, 16:02 | ||||||
|
В Твин-бейсике ты можешь задать
1
|
||||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 22.01.2025, 17:25 [ТС] | |
|
Внимание всем!!!
Я только что узнал, что существует два подразделения: 1. Picture1.Picture - полная область картинки минус то что ты сам нарисуешь (не видно) 2. Picture1.Image - ограниченная прямоугольником видимости на экране картинка плюс то что ты сам нарисуешь (видно) И две эти вещи - это hBitmap оказывается!!! Добавлено через 2 минуты А так же стандартные функции сохранения картинки сохраняют в 24 бита, а 32 бита они не поддерживают. Добавлено через 13 минут До сегодняшнего дня я даже не знал, что существуют 32-битные BMP с альфа-каналом, пока The trick мне не сказал, стандартные функции Windows сохраняют BMP же в 24 бита, без всяких там прозрачностей. Честно, я просто ни разу в жизни ещё не видел BMP-файл с прозрачносятми!!!!!!!!!! Добавлено через 1 минуту Но тот проект от The trick, возможно, как раз это и делает. Сохраняет с прозрачносятями наверное. Сейчас это проверю. Добавлено через 1 минуту Сейчас я даже смею предположить что hBitmap это и есть stdPicture Добавлено через 2 минуты stdPicture.Handle вернее это hBitmap Я столько всего много нового узнал, методом тыка... Добавлено через 43 секунды С графикой я просто ещё не работал раньше, особо Добавлено через 10 минут Я определённо прокачал свои знания конечно, а некоторые думают, нахрена я это делаю, мол зачем мне это надо вообще всё, если есть стандартные функции которыми можно тупо пользоваться... Добавлено через 6 минут Для меня так же было новостью что в hdc картинки нет оказывается... Я всегда думал что картинка засоывавается в hdc когда рисуешь через API
0
|
|
| 22.01.2025, 17:26 | |
|
Я бы хотел сделать, али найти такую прогу. Берешь, допустим, выделяешь область вручную, скринишь, потом проматываешь колесиком, опятт скринишь, и чтобы этот скрин автоматически сращивался с предыдущим, чтобы автоматически определялся шов, по которому можно сращивать два снимка..
Добавлено через 59 секунд Так, мечта просто...
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||
| 22.01.2025, 17:35 [ТС] | ||
|
testuser2, я на VBA кстати видел где-то пример сращивания картинок
Добавлено через 40 секунд Добавлено через 2 минуты testuser2, нашёл: https://www.devhut.net/vba-wia... ng-images/ как раз вчера забрёл на этот веб-ресурс, в своих безумных попытках найти идеальный код)))
1
|
||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 22.01.2025, 17:37 [ТС] | |
|
testuser2, там, как видишь, есть вертикальное слияние картинок и горизонтальное слияние картинок, и всё уже написано
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 22.01.2025, 17:44 [ТС] | |
|
Так что я нашёл твою мечту))) Посмотри внизу комменты)))
1
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 22.01.2025, 18:36 [ТС] | |
|
Итак, вернёмся к моей основной теме. Да, я проверил только что работу проекта от The trick под названием Png2Bmp и ДА я действительно сейчас убедился в том, что BMP-файлы действительно реально сохраняются в 32 бита с альфа-каналом, с прозрачностью!!! Однако, тут есть одно очень большое НО, большинство просмотрщиков не видят эту прозрачность в BMP. Включая стандартный просмотрщик изображений Windows 7, в десятке наверное уже видит, но у меня нет десятки, не могу проверить. И старый фотошоп 7.0 даже не видит эту прозрачность в BMP.
Добавлено через 1 минуту Таким образом сегодня я впервые в своей жизни увидел BMP файлы с прозрачностью, в полном шоке сейчас от этого нахожусь. Раньше я всегда всю жизнь думал что таких файлов не бывает у BMP, думал, что нет никакой прозрачности... Добавлено через 1 минуту Учитывая, что стандартные функции Windows не сохраняют BMP файлы с прозрачность, наверное, именно поэтому The trick и создавал сам сохранял BMP файлы с нуля своим кодом использую заголовочные структуры и так далее... Добавлено через 8 минут Элемент управления Image1 при загрузке таких 32-битных BMP делает черноту вокруг вместо прозрачности (удивляюсь как он вообще загрузил 32-битную BMP) Добавлено через 3 минуты Все стандартные виндовские коды сохранения в BMP сохраняют в 24 бита, не в 32 бита. А работать с 32-битными BMP мало кто умеет вообще...
0
|
|
|
785 / 308 / 17
Регистрация: 21.01.2023
Сообщений: 528
|
|
| 22.01.2025, 19:31 | |
|
1
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||
| 22.01.2025, 22:53 [ТС] | |||
|
Добавлено через 4 минуты Добавлено через 2 часа 36 минут Палитра нужна только в битрейтах: 1 бит - это 2 цвета 4 бит - это 16 цветов 8 бит - это 256 цветов В 16, 24 и 32 бита палитра не нужна, даже лишние 4 байта, заполненных нулями, тоже ставить не нужно
0
|
|||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 22.01.2025, 23:31 [ТС] | |
|
The trick, ну я пробовал сохранять через SavePicture - понятное дело 32 бита не тянет, потом пробовал через объект WIA - тоже только 24 бита максимум, GDI+ API вроде только 32 бита может сохранить...
Добавлено через 2 минуты А ещё я пробовал через интерфейс сохранять то есть это IPicture.SaveAsFile там тоже 32 бита не поддерживает, только 24
0
|
|
| 22.01.2025, 23:31 | |
|
Как сделать Picture1.hDC динамичным? Как сохранить хэндл иконки в файл bmp или ico? Как сохранить содержимое HDC в графический файл? Как перевести картинку в байтовый массив? Как сохранить картинку *.bmp в MSSQL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 6. Питон реализация энилоджиковской модели, картинка про Центральную часть будущей модели
anaschu 26.06.2026
Етить. ИИ мне на основе моего старого файла R создал вот эту вот хмерь на пайтоне.
Это уже новая модель, модель сукцессии грибной.
потоки фосфора, азота. Углерода.
5 видов организмов.
Я даже. . .
|
Как замкнутый ядерный цикл решит проблему недостатки фосфора? Био миграция фосфора со дна океана
anaschu 26.06.2026
Биологический лифт: Концепция подъема фосфора со дна океана с помощью ЗЯТЦ
Предлагаю на обсуждение альтернативу тяжелому промышленному бурению океанического дна. Вместо сложной инженерии мы можем. . .
|
сукцессия 5
anaschu 26.06.2026
ПЛАН РАЗРАБОТКИ математической модели сукцессии микоризных систем
Переход AM → EcM (Endo + ErM) · Шумилов А. С. · ИФХиБПП РАН · Пущино · 2026
. . .
|
сукцессия 4
anaschu 25.06.2026
Более детализированный план разработки
План доработки модели динамики микоризных симбиозов (EcM с гистерезисом)
Цель: Реализовать логику переключения между эрикоидным (ErM) и эктомикоризным. . .
|
|
сукцессия 3
anaschu 25.06.2026
Примерный план работ по модели
|
сукцессия 2
anaschu 25.06.2026
параметризировочная калибровочная таблица будущей модели
|
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание:
как одно здание порождает конфликты требований,
которые никто не планировал
Материалы для обсуждения с МГСУ · 2026
Рисунки внутри приложенного ворд файла.
Что за. . .
|
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования?
Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная.
Где разрыв
. . .
|