Tak, jak kolega @[losowa nazwa] napisał, skorzystaj z plików amorficznych, zapisz najpierw opis, później w dalszej części dane obrazu; Dlaczego taka kolejność? Będziesz mógł łatwo wykonać i zapis, i odczyt; Jeśli chciałbyś zapisać najpierw obrazek, później opis też nie ma większego problemu, ale musiałbyś umieć odczytać jego wielkość, co zakładam, że na razie nie umiesz, więc pozostań przy wersji @[losowa nazwa];
Ja ze swojej strony polecę klasę TMemoryStream
do odczytu obrazu; Teraz robię program, do którego całą grafikę (czyli m.in. ikony do menu głownego) znajdują się w jedym pliku i odpowiednio w konstruktorach formularzy odczytuję wybrane dla niej ikony; Bardzo przydatna jest ta klasa, dużym plusem jest łatwość obsługi;
Jeśli chodzi o zapis danych do pliku to nie ma o czym dyskutować, poczytaj artykuł o kopiowaniu plików na tym forum, a będziesz wiedział jak odczytywać kolejne bloki danych i zapisywać je do nowego; Niekoniecznie musisz użyć WinAPI, najpierw skoncentruj się nad teorią i praktyką; Poczytaj także o BlockRead
i BlockWrite
, bo bez tego się raczej nie obejdziesz (choć na pewno można użyć innych metod, ale te są dość proste do zrozumienia);
Jeżeli chodzi o sam opis - @[losowa nazwa] podał pomysł, by zapisać w pierwszym bajcie ilość znaków opisu; Możesz to wykorzystać i dynamicznie przydzielać obszar dla niego, ale nie sądzę, żeby tworzone opisy były aż tak długie, by znacząco wpływały na wagę pliku; Możesz ustalić stałą długość opisu (np. 255
znaków - typ ShortString
) i zapisywać opis na sztywno, resztę niewykorzystanych znaków wypełnisz czym chcesz; Jednak myślę, że nie ma potrzeby kombinować i łatwiejszy w implementacji będzie dynamiczny obszar dla opisu; Zrób jak chcesz, możliwości masz kilka, wszystko zależy od tego co dasz radę zrobić;
Kodu Ci nie napiszę, ale jak postarasz się i napiszesz coś, co niekoniecznie będzie w pełni realizować założenia - z chęcią pomogę;
pelsta napisał(a)
W pliku jpg można zapisać dane Exif - tam należy umieścić opis zdjęcia.
To też jest wyjście i to bardzo dobre, ale nie sądzę, żeby autor potrafił na tym etapie drążyć w danych pliku; To oczywiście wiąże się ze znajomością formatu pliku jaki się wykorzystuje w programie; Na to chyba jeszcze przyjdzie czas :]
Poza tym autor nie napisał jakich formatów będzie używał jego program; Jeśli tylko np. jpg
to racja, można wykorzystać Exif
, ale jeśli nie no to sprawa się dość komplikuje (trochę więcej pracy go czeka);