Встраивать изображение в код без использования раздела ресурсов или внешних изображений

Я ищу способ встроить изображение в библиотеку (только для Windows). Я не хочу использовать «традиционный» способ помещения его в ресурсы (из-за особых обстоятельств, из-за которых не так удобно возиться с дескриптором ресурса.

В идеале должно быть что-то вроде файлов xpm: «текстовое» представление изображения, которое помещается в массив c и который некоторый код преобразуется в растровое изображение в памяти, которое затем можно каким-то образом загрузить в HIMAGE или HICON. Изображения, которые я хочу встроить, представляют собой 32-битные растровые изображения (bmp). Есть идеи? Я использую MFC, поэтому мне подойдет библиотека MFC, но, конечно, я могу использовать и библиотеку, которая не использует MFC. Спасибо.

В * nix xxd это ответ, stackoverflow.com/a/17270219/1163019

auselen 24.06.2013 11:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
1
6 926
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Погуглите утилиту bin2c (что-то вроде http://stud3.tuwien.ac.at/~e0025274/bin2c/bin2c.c). Он берет двоичное представление файла и выводит исходный файл C, который включает в себя массив байтов, инициализированных этими данными.

Просто свяжите файл, и ваше изображение останется в памяти.

Использование такого рода инструментов действительно распространено во встроенных системах, где такие вещи, как «ресурсы» и даже файлы, могут не существовать.

Сработало отлично, спасибо. Для полноты: для загрузки данных из памяти я использовал код из ragestorm.net/blogs/?p=9, который вращается вокруг LookupIconIdFromDirectoryEx () и CreateIconFromResourceEx () (для HICON).

Roel 30.10.2008 17:20

Я бы предложил вместо этого использовать xxd -i myimage.png > myimage.h. Обратите внимание, что xdd - это утилита Linux.

gberth 01.10.2020 16:49

Канитель может экспортировать в файлы C. Я думаю, это был бы самый простой способ сделать это.

Приложение с открытым исходным кодом Hexy создано специально для этого. Он работает в Windows и Linux. https://github.com/tristan2468/Hexy

Он отличается от bin2c? Есть где-нибудь бинарник?

Roel 17.05.2011 17:53

Бинарные файлы находятся по этой ссылке на GitHub, справа есть кнопка «Загрузки». Hexy основан на графическом интерфейсе, поэтому вы просто перетаскиваете на него все файлы, которые хотите преобразовать.

tristan_2468 18.05.2011 15:20

Другие вопросы по теме