|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
|
Как сохранить картинку в файл BMP или байтовый массив из Picture1.hdc21.01.2025, 05:56. Показов 9126. Ответов 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
|
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
|||||||||||
| 23.01.2025, 02:12 [ТС] | |||||||||||
Сообщение было отмечено Catstail как решение
Решение
Я создал идеальный проект. Под названием "Как сохранить картинку в файл BMP или байтовый массив из HBITMAP".
Я написал модуль который сохраняет любую картинку в байтовый массив BMP, при этом байтовый массив BMP компонуется вручную, файл BMP создаётся практически с нуля! Своим собственным кодом! Плюс ко всему прочему, в моём модуле, в моей функции SavePictureAsBitmap имеется возможность конвертировать картинку в различные биты: 1, 4, 8, 16, 24 и даже 32 бита!!! Что немаловажно кстати, если картинка была изначально загружена со всеми прозрачностями (32 бита) - то она со всеми прозрачностями и остаётся, и сохраняется с поддержкой альфа-канала даже. Что немаловажно тоже кстати. Альфа-канальное сохранение протестируйте сами уже, если хотите. В приложенном проекте-примере идёт работа с простыми картинками только. Надеюсь, этот код будет работать даже в Windows 95 ![]() Код идеальнейшего модуля (старался 3 дня писал):
3
|
|||||||||||
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
||||||||||||||
| 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
|
||
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
||
| 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
|
|
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
|
| 23.01.2025, 12:22 [ТС] | |
|
Считай, что The trick меня обучал программировать здесь вообще... До знакомства с The trick я в API вообще мало что понимал, только готовым кодом пользовался...
0
|
|
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
||
| 23.01.2025, 12:28 [ТС] | ||
|
Если я использую VarPtr значит на то есть причина. Мне лучше один раз изменить декларацию, чем потом 100 раз переписывать на ByVal VarPtr А так 1 раз изменил декларацию и всё и больше не надо писать по 100 раз лишние слова ByVal... Неужели ты этого не понимаешь!? Вроде бы умный парень же... Добавлено через 2 минуты Нашёл к чему придраться конечно Лишь бы докопаться до чего-то
0
|
||
| 23.01.2025, 13:25 | ||||
|
Добавлено через 8 минут Добавлено через 23 минуты
0
|
||||
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
||
| 23.01.2025, 14:01 [ТС] | ||
|
testuser2, ты хотябы пробовал без VarPtr обойтись? прежде чем кричать что он не нужен.
Добавлено через 2 минуты
0
|
||
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
|||
| 23.01.2025, 16:59 [ТС] | |||
|
Добавлено через 46 секунд VarPtr - это идеальность, которая позволяет нам работать со смещениями в структурах для CopyMemory Добавлено через 36 секунд Добавлено через 19 секунд testuser2, проверь, пожалуйста, если не лень. Добавлено через 29 секунд testuser2, тем более у тебя другая система Windows 8, у тебя и по другому может быть
0
|
|||
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
|
| 24.01.2025, 17:21 [ТС] | |
|
testuser2, ну что там с тестом? или сегодня опять нет сил?
0
|
|
|
787 / 308 / 17
Регистрация: 21.01.2023
Сообщений: 531
|
||||
| 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
|
||||
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
|
| 25.01.2025, 13:00 [ТС] | |
|
Умники тут меня осуждают вместо того чтобы предоставить свою версию кода. Перепишите. Покажите как лучше.
Добавлено через 1 минуту Как хочу так и декларирую.
0
|
|
|
Модератор
|
|||
| 25.01.2025, 13:22 | |||
|
Не по теме:
0
|
|||
|
Вернулся
1753 / 649 / 45
Регистрация: 10.09.2021
Сообщений: 2,803
|
||||||
| 25.01.2025, 16:59 [ТС] | ||||||
2
|
||||||
| 25.01.2025, 16:59 | |
|
Как сделать Picture1.hDC динамичным? Как сохранить хэндл иконки в файл bmp или ico? Как сохранить содержимое HDC в графический файл? Как перевести картинку в байтовый массив? Как сохранить картинку *.bmp в MSSQL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|