Przechowywanie bitmap

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Przechowywanie bitmap

Nowy postprzez Matthew » czwartek, 21 maja 2009, 02:37

Witam,

Mam kolejny problem ;] Chodzi tym razem o przechowywanie bitmap. Poczatkowo robilem vector bitmap, ktory sprawowal sie swietnie, do momentu, gdy licznik jego elementow przekroczyl jakas magiczna granice. Wtedy to tez otrzymalem komunikat o 'braku miejsca w magazynie dla wykonania tej instrukcji'. Pomyslalem, ze przedobrzylem z iloscia uchwytow (chociaz bylo ich raptem kolo 100), z drugiej jednak strony musze miec staly dostep do bitmap, wiec jakies czyszczenie w trakcie pracy programu nie wchodzi w gre. Pomyslalem, ze wrzuce te bitmapy do ImageList. Wszystko cacy do momentu gdy sie okazalo, ze rozmiar bitmap przechowywanych w imagelist musi byc z gory okreslony i taki sam dla kazdej (a moje bitmapy sa roznego rozmiaru). I teraz pytanie. Jak madrze przechowac bitmape? Moze jest jakis doskonalszy sposob niz idiotyczny imagelist... :/ Bardzo prosze o pomoc, bo mi pomysly skonczyly sie juz niestety :[
Avatar użytkownika
Matthew
Bladawiec
Bladawiec
 
Posty: 20
Dołączył(a): niedziela, 24 sierpnia 2008, 13:59
Podziękował : 0
Otrzymał podziękowań: 0
    NieznanyNieznana

Re: Przechowywanie bitmap

Nowy postprzez polymorphism » czwartek, 21 maja 2009, 11:05

Pomyslalem, ze przedobrzylem z iloscia uchwytow (chociaz bylo ich raptem kolo 100)

Tu nie chodzi o ilość uchwytów, tylko o ilość dostępnej pamięci na bitmapy DDB. Podejrzewam, że te 100 bitmap łącznie niemało zajmuje, no chyba że gdzieś w programie bawisz się czystym winapi i nie zwalniasz poprawnie bitmap, co skutkuje wyciekami pożerającymi zasoby.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Przechowywanie bitmap

Nowy postprzez Cyfrowy Baron » piątek, 22 maja 2009, 13:09

Ja zastanawiam się nad sensem i praktyczną stroną przechowywania takiej liczby bitmap w pamięci. To musi wcześniej czy później zaowocować przepełnieniem pamięci. Nie napisałeś co robisz, co robi Twój program, ale nie spotkałem się jeszcze w żadnym programie z podobnym rozwiązaniem, na ogół w przypadku tak dużej liczby bitmap są one w miarę potrzeb wczytywane z dysku, nawet przeglądarki grafiki, które wyświetlają przecież czasami kilka tysięcy miniaturek grafik, nie przechowują ich wszystkich w pamięci, a jedynie przechowują ścieżki dostępu do tych plików, a wyświetlają tworzone dynamicznie miniaturki tychże grafik, więc może powinieneś stworzyć coś podobnego.

W programie który właśnie kończę zastosowałem bufor przechowujący w pamięci grafiki w formacie JPEG, ale dotyczy to raptem 6 plików, nie posługiwałem się jednak wektorem lecz tablicą:

Kod: Zaznacz cały
TJPEGImage *JpegTitle[6];

for(int i = 0; i < 6; i++)
  JpegTitle[i] = new TJPEGImage();
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość