|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
Как сохранить картинку в файл BMP или байтовый массив из Picture1.hdc21.01.2025, 05:56. Показов 7583. Ответов 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
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||||||||||
| 23.01.2025, 02:12 [ТС] | |||||||||||
Сообщение было отмечено Catstail как решение
Решение
Я создал идеальный проект. Под названием "Как сохранить картинку в файл BMP или байтовый массив из HBITMAP".
Я написал модуль который сохраняет любую картинку в байтовый массив BMP, при этом байтовый массив BMP компонуется вручную, файл BMP создаётся практически с нуля! Своим собственным кодом! Плюс ко всему прочему, в моём модуле, в моей функции SavePictureAsBitmap имеется возможность конвертировать картинку в различные биты: 1, 4, 8, 16, 24 и даже 32 бита!!! Что немаловажно кстати, если картинка была изначально загружена со всеми прозрачностями (32 бита) - то она со всеми прозрачностями и остаётся, и сохраняется с поддержкой альфа-канала даже. Что немаловажно тоже кстати. Альфа-канальное сохранение протестируйте сами уже, если хотите. В приложенном проекте-примере идёт работа с простыми картинками только. Надеюсь, этот код будет работать даже в Windows 95 ![]() Код идеальнейшего модуля (старался 3 дня писал):
3
|
|||||||||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||||||||||
| 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
|
||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 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
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 23.01.2025, 12:22 [ТС] | |
|
Считай, что The trick меня обучал программировать здесь вообще... До знакомства с The trick я в API вообще мало что понимал, только готовым кодом пользовался...
0
|
|
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 23.01.2025, 12:28 [ТС] | ||
|
Если я использую VarPtr значит на то есть причина. Мне лучше один раз изменить декларацию, чем потом 100 раз переписывать на ByVal VarPtr А так 1 раз изменил декларацию и всё и больше не надо писать по 100 раз лишние слова ByVal... Неужели ты этого не понимаешь!? Вроде бы умный парень же... Добавлено через 2 минуты Нашёл к чему придраться конечно Лишь бы докопаться до чего-то
0
|
||
| 23.01.2025, 13:25 | ||||
|
Добавлено через 8 минут Добавлено через 23 минуты
0
|
||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||
| 23.01.2025, 14:01 [ТС] | ||
|
testuser2, ты хотябы пробовал без VarPtr обойтись? прежде чем кричать что он не нужен.
Добавлено через 2 минуты
0
|
||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|||
| 23.01.2025, 16:59 [ТС] | |||
|
Добавлено через 46 секунд VarPtr - это идеальность, которая позволяет нам работать со смещениями в структурах для CopyMemory Добавлено через 36 секунд Добавлено через 19 секунд testuser2, проверь, пожалуйста, если не лень. Добавлено через 29 секунд testuser2, тем более у тебя другая система Windows 8, у тебя и по другому может быть
0
|
|||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 24.01.2025, 17:21 [ТС] | |
|
testuser2, ну что там с тестом? или сегодня опять нет сил?
0
|
|
|
764 / 281 / 17
Регистрация: 21.01.2023
Сообщений: 434
|
||||
| 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
|
||||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
|
| 25.01.2025, 13:00 [ТС] | |
|
Умники тут меня осуждают вместо того чтобы предоставить свою версию кода. Перепишите. Покажите как лучше.
Добавлено через 1 минуту Как хочу так и декларирую.
0
|
|
|
Модератор
|
|||
| 25.01.2025, 13:22 | |||
|
Не по теме:
0
|
|||
|
Испарился
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
|
||||||
| 25.01.2025, 16:59 [ТС] | ||||||
2
|
||||||
| 25.01.2025, 16:59 | |
|
Помогаю со студенческими работами здесь
60
Как сделать Picture1.hDC динамичным? Как сохранить хэндл иконки в файл bmp или ico? Как сохранить содержимое HDC в графический файл? Как перевести картинку в байтовый массив? Как сохранить картинку *.bmp в MSSQL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|