własny format obrazów na bazie jpg

0

Witam. Jestem początkującym w bcb i mam takie pytanko jak zrobić własny podgląd obrazków. Nie chodzi mi o zrobienie podglądu istniejących plików jpg. Tylko tworzyć własny format na bazie plików jpg tylko zmieniony tam troszke np ustalić własną tablice kolorów i zrobić do nich własny podgląd aby mógł być tylko odczytywany w moim programie. Nie mam pomysłu jak to zrobić, bo nie wiem jak są zapisywane jpg i odczytywane krok po kroku a na necie nie mogłem znaleŹć takich informacji. Jeśli ktoś miałby pomysł i nakierował mnie jak można by to wykonać z góry wielkie wielkie dzięki.

0

JPG korzysta z jakieś tam tablicy kolorów, nie znam się zbyt, ale załóżmy(wiem że task nie jest ale załóżmy) że RGB... np mamy kolor FF00BB więc Ty go sobie zapisuj w plikach jako BBFF00 albo nawet pierwszy kolor w taki sposób następny w innej kombinacji i znów w takiej i znow i innej... obraz się otworzy ale będzie nie do oglądnięcia;]

0

szczerze mówiąc idziesz złym tropem, nie znam się także na jpg, ale wiem nie jest on taki prosty i chyba jpg nie ma swojej tablicy kolorów, gif ma, ale jpg? raczej nie, konwersja jpg raczej polega na zmniejszeniu ilości zapisywanych pikseli...
prosty test, zrób sobie bitmapę jedną połówkę zrób jednym kolorem, a druga drugim, zapisz do jpg, zobaczysz, że linia pomiędzy dwoma kolorami będzie rozmyta(wymieszana), zapewne dlatego, że jpg nie zachowuje wszystkich pikseli tylko co jakiś czas, a przy odtworzeniu te których nie zapisał miesza z tymi obok które zapisał, cóż konwersja jpg nie jest taka prosta, w końcu zmniejsza bitmapę kilka na nawet kilkanaście razy, w zależności od poziomu kompresji(czyli zapewne częstości zapisywania pikseli)...

0

Głowna zasada działania JPG: obraz dzielony jest na prostokąty (u JPG 8x8), dla każdego prostokąta oblicza się jego kolor średni, dla każdego piksela w prostokącie oblicza się różnicę jego koloru od średniej całego prostokąta. Różnice te zapisuje się na mniejszej ilości bitów niż zakres RGB. Stopień kompresji możesz kontrolować przez ilość bitów przypadająca na obliczoną różnicę.

Z racji na charakter jpg'a nie używa się palety kolorów, jest nie potrzebna.

W JPG powyższe zadanie realizowane jest przy pomocy dyskretnej transformaty kosinusowej. Do tego dochodzi jeszcze prosta kompresja - kodowanie Huffmana.
Jeśli chcesz stworzyć kompletnie nowy format to powinno ci wystarczyć, reszta o JPG to szczegóły implementacyjne w które nie musisz się wgłębiać (ale nie zaszkodzi ;) ). Jeśli chcesz tylko nieco zmodyfikować JPG to musisz jeszcze trochę poczytać na jego temat. Na necie nie brak informacji.

A jeśli chcesz po prostu aby jpg'a nie dało się otworzyć w zwykłej przeglądarce to zaszyfruj go xor'em (np. zaneguj wszystkie bity).

0

No macie racje, mam jezcze jedno pytanko znacie może jakieś stronki z opisem jak wczytywać plik jpg do Image nie chodzi mi o funkcję LoadFromFile tylko samemu pobierać dane a potem wstawiać je do Image ???.

1 użytkowników online, w tym zalogowanych: 0, gości: 1