|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
Как сохранить картинку в файл BMP или байтовый массив из Picture1.hdc21.01.2025, 05:56. Показов 8656. Ответов 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
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||||||||||
| 23.01.2025, 02:12 [ТС] | |||||||||||
Сообщение было отмечено Catstail как решение
Решение
Я создал идеальный проект. Под названием "Как сохранить картинку в файл BMP или байтовый массив из HBITMAP".
Я написал модуль который сохраняет любую картинку в байтовый массив BMP, при этом байтовый массив BMP компонуется вручную, файл BMP создаётся практически с нуля! Своим собственным кодом! Плюс ко всему прочему, в моём модуле, в моей функции SavePictureAsBitmap имеется возможность конвертировать картинку в различные биты: 1, 4, 8, 16, 24 и даже 32 бита!!! Что немаловажно кстати, если картинка была изначально загружена со всеми прозрачностями (32 бита) - то она со всеми прозрачностями и остаётся, и сохраняется с поддержкой альфа-канала даже. Что немаловажно тоже кстати. Альфа-канальное сохранение протестируйте сами уже, если хотите. В приложенном проекте-примере идёт работа с простыми картинками только. Надеюсь, этот код будет работать даже в Windows 95 ![]() Код идеальнейшего модуля (старался 3 дня писал):
3
|
|||||||||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||||||||||||
| 23.01.2025, 12:00 [ТС] | ||||||||||||||
|
Argus19, в любом, хоть в PNG если сами туда запихнёте так
Добавлено через 7 минут Да, специально так. Смотри там идёт
Добавлено через 1 минуту я не проверял, может и может работать без VarPtr... Добавлено через 3 минуты Добавлено через 55 секунд Добавлено через 22 минуты testuser2, проверь пожалуйста в VBA кнопку Test5 интересно будет ли там такой же глюк как в VB6 IDE, что функция SimpleSavePicture(Me.Picture) получает массив байт JPG, а не BMP как надо... Добавлено через 1 минуту Просто технология сохранения картинки с использованием PropertyBag - это такое чудо, что в IDE работает так, а в EXE по другому в VB6... Добавлено через 2 минуты Я думал может из-за надстройки PNGVB6 от The Trick'а происходит такое чудо, но вроде отключена эта надстройка и всё равно такое глючное поведение в VB6, при чём проверял в двух разных Windows - в XP и в 7
0
|
||||||||||||||
| 23.01.2025, 12:18 | ||
|
0
|
||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||
| 23.01.2025, 12:22 [ТС] | ||
|
0
|
||
| 23.01.2025, 12:22 | |
|
Потом, вот это объявление CopyMemory
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)оно как бы каноничное - два аргуента ByRef. Я в основном везде вижу такое объявления, и оно же в Апи-вьювере, и в WinDevLib от fafo. И когда я вижу другое объявление, то это как бы раздражает, я считаю, надо писать как все, не отбиваться от общего стада, т.ск.
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 23.01.2025, 12:22 [ТС] | |
|
Считай, что The trick меня обучал программировать здесь вообще... До знакомства с The trick я в API вообще мало что понимал, только готовым кодом пользовался...
0
|
|
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||
| 23.01.2025, 12:28 [ТС] | ||
|
Если я использую VarPtr значит на то есть причина. Мне лучше один раз изменить декларацию, чем потом 100 раз переписывать на ByVal VarPtr А так 1 раз изменил декларацию и всё и больше не надо писать по 100 раз лишние слова ByVal... Неужели ты этого не понимаешь!? Вроде бы умный парень же... Добавлено через 2 минуты Нашёл к чему придраться конечно Лишь бы докопаться до чего-то
0
|
||
| 23.01.2025, 13:25 | ||||
|
Добавлено через 8 минут Добавлено через 23 минуты
0
|
||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||
| 23.01.2025, 14:01 [ТС] | ||
|
testuser2, ты хотябы пробовал без VarPtr обойтись? прежде чем кричать что он не нужен.
Добавлено через 2 минуты
0
|
||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|||
| 23.01.2025, 16:59 [ТС] | |||
|
Добавлено через 46 секунд VarPtr - это идеальность, которая позволяет нам работать со смещениями в структурах для CopyMemory Добавлено через 36 секунд Добавлено через 19 секунд testuser2, проверь, пожалуйста, если не лень. Добавлено через 29 секунд testuser2, тем более у тебя другая система Windows 8, у тебя и по другому может быть
0
|
|||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 24.01.2025, 17:21 [ТС] | |
|
testuser2, ну что там с тестом? или сегодня опять нет сил?
0
|
|
|
786 / 309 / 17
Регистрация: 21.01.2023
Сообщений: 529
|
||||
| 25.01.2025, 08:52 | ||||
ByVal, наоборот, теперь не нужно писать лишнее VarPtr(). А VarPtr() - это не просто удлиннение кода, это ещё и накладные расходы на вызов самой функции VarPtr() из своей DLL.ByVal VarPtr().Кроме того, если бы ты действительно пользовался этой декларацией в других программах, где требуется вычисление адреса, и поэтому она так написана, то в ней бы и Destination тоже должен был быть ByVal, а то какая-то странная избирательность.И ещё, ByVal Source As Long выглядит очень неоднозначно, легко можно подумать, что Source имеет тип Long и передаётся ByVal, должно было быть как-то типа ByVal pSource As Long.
0
|
||||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
|
| 25.01.2025, 13:00 [ТС] | |
|
Умники тут меня осуждают вместо того чтобы предоставить свою версию кода. Перепишите. Покажите как лучше.
Добавлено через 1 минуту Как хочу так и декларирую.
0
|
|
|
Модератор
|
|||
| 25.01.2025, 13:22 | |||
|
Не по теме:
0
|
|||
|
Вернулся
1748 / 644 / 45
Регистрация: 10.09.2021
Сообщений: 2,786
|
||||||
| 25.01.2025, 16:59 [ТС] | ||||||
2
|
||||||
| 25.01.2025, 16:59 | |
|
Как сделать Picture1.hDC динамичным? Как сохранить хэндл иконки в файл bmp или ico? Как сохранить содержимое HDC в графический файл? Как перевести картинку в байтовый массив? Как сохранить картинку *.bmp в MSSQL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал.
Оно само - говорит.
Кто слышит тот слышит.
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|