Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.11.2007, 21:38
s.Mobi s.Mobi вне форума
Прохожий
 
Регистрация: 02.09.2007
Сообщения: 14
Репутация: 10
Вопрос Вывести на форму картинку, находящуюся в байтовом массиве

Подскажите, как вывести на форму картинку JPG или Gif, находящуюся в байтовом массиве? Если непонятно что имеется в виду под байтовым массивом, вот ответ:

var
a : array [1..65535] of byte;

в массиве картинка находится целиком, т.е. так, как если б она находилась в файле. Грузить из файла-то понятно как - LoadFromFile, а вот как грузить из массива? Нужно это для того чтобы была возможность быстро менять картинки, помещая данные в массив и потом выводя данные из массива на форму. Можно, конечно, создавать временный файл, сохраняя туда данные о картинке и читай потом оттуда, но мне этот вариант не нравится по некоторым причинам, одна из которых низкое быстродействие, вторая - не хочется "засирать" каталог с программой либо какой-либо иной временными файлами своей программы.

Для отображения .gif планируется использовать компонент RxGifAnimator из пакета RxLib, для вывода .jpg пойдет и стандартный Image. Только вот как картинку в них грузить? Теоретически это возможно через потоки - я так понимаю нужно в поток записать массив, потом из потока прочесть картинку, только как это сделать, мож кто подскажет? Ибо с потоками дело никогда не имел

Последний раз редактировалось s.Mobi, 12.11.2007 в 00:49.
Ответить с цитированием
  #2  
Старый 04.01.2010, 17:07
Berserk75 Berserk75 вне форума
Прохожий
 
Регистрация: 04.01.2010
Сообщения: 1
Репутация: 10
По умолчанию Тоже проблема

У меня тоже такая проблема
Ответить с цитированием
  #3  
Старый 04.01.2010, 18:18
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Дело в том, что эти форматы сжаты при помощи специальных алгоритмов
http://articles.org.ru/docum/jpeg.php
Для получения картинки из этого массива байт нужно поработать со спецификацией формата...Вот к примеру jpg
http://www.martinreddy.net/gfx/2d/JPEG.txt
Ну или на русском и популярно...
http://ru.wikipedia.org/wiki/JPEG
Таким образом нужно фактически распаковать массив байт в двумерный массив изображения согласно исхоному размеру картинки взятый из спецификации...
Это если все делать ручками, но наверняка есть в сети алгиритмы которые сделают это за вас...
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #4  
Старый 04.01.2010, 21:01
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Для TImage предложил бы такой вариант.
Создаете TPicture.
В него в потоке ( пока одно изображение показывается ) загружаете следующее.
Код:
Picture.LoadFromFile
При смене картинок
Код:
Image.SetPicture(Value: TPicture);
Только надо проработать синхронизацию.
Ответить с цитированием
  #5  
Старый 04.01.2010, 21:09
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Нафига такие сложности?
Создаете динамичнский массив из TImage. Загружаете в него сколько нужно картинок. Выводите на форму из массива нужную картинку.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 04.01.2010, 21:33
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

У меня потоки с ассоциировались с нитями ( TThread ).
Т.е. чтоб без подвисания формы.
А так практически все равно будет, хоть в массив TImage, хоть в массив TPicture.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter