Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка изображений в кэш 
:(
    Опции темы
Salatovec
Дата 25.4.2010, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 9.1.2008

Репутация: нет
Всего: -1



Доброго всем времени суток, подскажите - в какой контейнер можно подгрузить изображения, независимо от их расширения, поясню:

есть ряд изображений расширения bmp и jpeg, мне их необходимо подгрузить с жёсткого диска в кэш, а после последовательно (с какой то частотой кадров) вывести на экран.

Со второй частью задачи проблем нету, а вот с первой  - есть. Раньше, когда была задача с одним типом файлов, например бмп, делал так:
Код

#include <vector.h>
vector<Graphics::TBitmap*> bmplist;


И после, в этот контейнер, по циклу пихал изображения. Но теперь одними бмпхами не отделаешься =\

Заранее спасибо!

Это сообщение отредактировал(а) Salatovec - 25.4.2010, 17:57
PM MAIL   Вверх
Sosed
Дата 25.4.2010, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 18.8.2009

Репутация: нет
Всего: 1



Если для всех видов изображения есть свои классы(TBitmap ...), то возможно так:

Код

struct Picture {
  void *pic;
  int type;
};
vector<Picture*> piclist;

А когда выводим кастим из void в нужный тип поглядывая на type

Это сообщение отредактировал(а) Sosed - 25.4.2010, 20:07
PM MAIL   Вверх
mes
Дата 25.4.2010, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



а можно конвертировать при загрузке в общий тип изображения.



--------------------
PM MAIL WWW   Вверх
xvr
Дата 26.4.2010, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



DirectShow выводит все, что выводится  smile 

PM MAIL   Вверх
SenkraD
Дата 26.4.2010, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 2
Всего: 23



Salatovec,  на сколько я понял, то это Builder и, если память
не изменяет,  там у всех этих классов картинок был общий предок (TPicture, кажись) -
вот и храни указатели на него в векторе.

Это сообщение отредактировал(а) SenkraD - 26.4.2010, 13:08


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Salatovec
Дата 26.4.2010, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 9.1.2008

Репутация: нет
Всего: -1



SenkraD, вот этот вариант, думаю, больше всего мне подходит  smile 
Делаю так:
Код

vector<TPicture*> pic01;

TPicture *pic = new TPicture;
for(int i = 0; i < 10; i++)
{
    pic->LoadFromFile(PathToMyCustomPicture[i]);
    pic01.push_back(pic);
}

Image1->Picture = pic01[0];


На последнюю строчку компилятор ругается. Что не так?
PM MAIL   Вверх
mes
Дата 26.4.2010, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Salatovec, обратите внимание, что вызывали new один раз хотя картинок предполагаете 10..
к тому же хранить указатели на объекты в векторы нужно очень осторжно, поэтому не желательно..
ошибка скорей всего из за того, что указатель надо разьименовывать перед присваиванием..
хотя было бы с Вашей стороны было б повежливей не скрывать текст, заставляя форумчан ломать голову, а привести текст ошибки.

ну вообшем должно быть примерно следущее:
Код

vector<TPicture> pic01;
pic01.resize (10);

for(int i = 0; i < 10; ++i)
    pic01[i].LoadFromFile(PathToMyCustomPicture[i]);

Image1->Picture = pic01[0];



Это сообщение отредактировал(а) mes - 26.4.2010, 20:35


--------------------
PM MAIL WWW   Вверх
xvr
Дата 26.4.2010, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Код

Image1->Picture->Assign(pic01[0]);

PM MAIL   Вверх
Alexeis
Дата 26.4.2010, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 12
Всего: 459



Цитата(SenkraD @  26.4.2010,  12:05 Найти цитируемый пост)
там у всех этих классов картинок был общий предок (TPicture, кажись) -

  TGraphic общий предок. TPicture универсальный контейнер, который может хранить любой TGraphic + дополнительные фичи. Можно сказать целый монстр. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Salatovec
Дата 26.4.2010, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 9.1.2008

Репутация: нет
Всего: -1



mes, делаю так, как Вы сказали:
Код

vector<TPicture*> pic01;

pic01.clear();
pic01.resize(1);
pic01[0]->LoadFromFile("Picture.jpeg");


Когда программа доходит до последней строчки, выдаётся сообщение о следующей ошибке:
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at adress 004289E3 in module 'Project1.exe'. Read of adress 00000000'.
PM MAIL   Вверх
mes
Дата 26.4.2010, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Salatovec @  26.4.2010,  22:16 Найти цитируемый пост)
делаю так, как Вы сказали:

я сказал не так.. посмотрите что хранит вектор у меня, а что у Вас .. 
smile


--------------------
PM MAIL WWW   Вверх
Alexeis
Дата 27.4.2010, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 12
Всего: 459



Цитата(mes @  26.4.2010,  22:20 Найти цитируемый пост)

я сказал не так.. посмотрите что хранит вектор у меня, а что у Вас .. 

  Во всем виновата проклятая звездочка smile .


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Salatovec
Дата 27.4.2010, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 9.1.2008

Репутация: нет
Всего: -1



mes,  точно, недоглядел  smile 
Теперь ругается на:
Код

Image1->Picture = pic01[0];

[BCC32 Error] Main.cpp(167): E2034 Cannot convert 'TPicture' to 'TPicture *'
PM MAIL   Вверх
mrbrooks
Дата 27.4.2010, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306




Код

    std::vector<TPicture *>pic01;
    for(int i = 0; i<5; i++)
    {
        TPicture *pic = new TPicture();
        pic->LoadFromFile("01.bmp");
        pic01.push_back(pic);
    }
    img1->Picture->Assign(pic01[0]);
    for(int i = 0; i<5; i++) delete pic01[i];


PM MAIL   Вверх
Salatovec
Дата 27.4.2010, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 9.1.2008

Репутация: нет
Всего: -1



mrbrooks, спасибо, работает  smile 
Ток вопрос возник, а pic не надо делитить?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0976 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.