Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
slavka92
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 2
1

Как вытащить картинки из файла ?

16.09.2010, 19:20. Просмотров 1485. Ответов 5
Метки нет (Все метки)

Есть большой файл, в котором накидано много чего, в т.ч. и картинки JPEG, GIF, BMP. Как вытащить картинки из файла в PictureBox, если известно с какого байта они начинаются в файле и каким заканчиваются. Структура содержащегося в файле участка = структуре содержимого дискового файла, с которого была скопирована информация.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2010, 19:20
Ответы с готовыми решениями:

Как вытащить иконку ЕХЕ файла?
Люди добрые! Помогите вырвать иконку из ехе - шника или любого другого файла и в ListViev...

Как вытащить иконку из .exe-файла?
Может ли, например, API вытащить иконку из .exe-файла? Спасибо заранее.

Как вытащить иконку из .exe-файла?
Может ли, например, API вытащить иконку из .exe-файла? Спасибо заранее.

Как вытащить код из .exe-файла?
Можно ли вытащить код из .exe-файла? Может, есть такая программа? Или Api-функция? Спасибо.

Как вытащить текст из картинки?
У меня есть книга в формате pdf в ней всё картинками Как можно вытащить из неё текст?? Вроде у...

5
Black Star
16.09.2010, 22:51 2
Я так не пробовал, но идею могу дать:
1) Создаешь массив (Dim m(?) as byte) по размерам битмапа
2) Копируешь туда данные (CopyMemory) или читаешь из файла
3) Создаешь битмап (CreateBitmap)
4) Выводишь в PictureBox
slavka92
0 / 0 / 0
Регистрация: 13.09.2010
Сообщений: 2
17.09.2010, 17:04 3
Black Star, спасибо.

Но дело в том, что хранение в битмапе ест много ресурсов, а это не очень хорошо, т.к. из файла jpeg = 20K мы получим bmp примерно = 170K, да и скорость развертывания в ОЗУ намного меньше чем скорость чтения с диска большого куска.
0
Comanche
17.09.2010, 17:44 4
PictureBox по определению работает с типом IPicture, преобразование к которому - это фактически и есть конвертация в DIB-формат.

Библиотека MS GDI+ хоть и позволяет грузить в PictureBox файлы самых разных форматов (GIF/JPG/TIF/PNG - помимо BMP), но при ближайшем рассмотрении выясняется, что для этого нужно выполнить вызов трёх её функций:
- GdipLoadImageFromFile (вот тут и можно 'скормить' ваш JPG или GIF)
- GdipCreateHBITMAPFromBitmap (название функции говорит само за себя)
- OleCreatePictureIndirect
(ну и GdipDisposeImage в конце)

Т.е. это просто тупая конвертация граф. форматов, не более.

Поэтому как-то выиграть (в вашей задаче) в скорости, боюсь, будет нереально. По сути, вся граф. подсистема Windows работает с DIB (BMP), незаметно для нас приводя к этому типу разные граф. ресурсы. Грузите ли вы JPG в программу Paint, или выбираете GIF в качестве 'обоев' - неважно.

Если не питать неоправданных надежд, что найдётся способ отобразить в Windows JPG-картинку прямо 'КАК ЕСТЬ' (это просто нереально), то лучше всего использовать библиотеку GDI+ с классом-обёрткой cGdiPlus (без этого класса довольно утомительно приводить формат инструкций Declare к виду, корректному с точки зрения VB и его представлений о 'типах данных').
Comanche
17.09.2010, 17:55 5
Небольшая поправка:
OleCreatePictureIndirect - это функция, конечно же, не из библиотеки GDI+ (если точно - то из oleaut32.dll).
Sorry.
Comanche
17.09.2010, 18:03 6
И опять я облажался )
За приведение формата инструкций Declare к понятному для бэйсика формату отвечает вовсе не класс cGdiPlus, а библиотека типов 'gdi+.tlb', которую надо подрубить к своему проекту. Вот без неё - точно будет туго. А без класса cGdiPlus, в принципе, можно и прожить. Просто в нём некто (http://www.syix.com/wpsjr1/index.html) не поленился написАть функцию FilenameToIPicture, которая и проделывает то, о чём написано выше. И ряд других полезных функций. Этот 'некто', кстати, написАл и ту самую бесценную 'gdi+.tlb'.
17.09.2010, 18:03
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2010, 18:03

Как вытащить из картинки её часть
Всем привет. Я создаю свою игру и чтобы не делать много картинок я сделал одну большую со всеми....

Как вытащить вложенные картинки из БД Acess в ImageList?
В одной из таблиц привязанной к проекту бд в поле типа "вложение" содержатся картинки. Необходимо...

Как вытащить название картинки из БД и показать картинку на экране
Приветствую знатоков форума. Очень нужна помощь. Имеется форум phpbb и соответственно БД к нему. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru