Konwersja bitmapy na 256 kolorów

0

No wlasnie... jak przekonwertowac bitmape na 256 kolorów?

Z góry dzieki.

Pozdrowienia.
BigLama ([email protected] , http://biglama.w.interia.pl )

0

Mozesz to zrobic w zwykłem Paincie (nie polecam) albo za pomaca takich programow jak Paint Shop Pro itp.

0

ale chodzi mi o sposób programowy (przy pomocy jakiejs procedurki w delphi).

0

BigLama napisał:

&gtale chodzi mi o sposób programowy (przy pomocy jakiejs procedurki w delphi).
&gt

Jeżeli chodzi Ci o sposób programowy w delphi to przeczytaj FAQ forum, zobaczyłbyś, że dobrym zwyczajem jest umieszczanie o jaki program chodzi np. [Delphi].
Zaś jeśli chodzi o rozwiązanie problemu konwersji poczytaj Windows SDK w dziale grafika. Tam przy kolorach i paletach jest coś o konwersji i dobieraniu najbardziej zbliżonego koloru.
(chyba pójdę w ślady pq u zmienię stopkę na taką jak jego: Po pierwsze naciśnij F1 :D )--Jest jeszcze jeden błąd ... :)

0

poszukaj gdzies w kodach przykladowych dolaczonych do delphi
tam powinno byc cos takiego---=-=[ Delphi 3, 6 ]=-=-
-=-=-==[ LKS ]==-=-=-
-=[ [email protected] ]=-

0

LKS napisał:
poszukaj gdzies w kodach przykladowych dolaczonych do delphi
&gttam powinno byc cos takiego

U mnie nie ma ;(
Mam Delphi5 Standard ;( ;( ;(

0

:-) Po prostu Delphi jest głupi na takie rzeczy musisz zmienić język.
Dobra żartowałem. Powiem za to jak to zrobić w pascalu, ale nie będzie ciekawie.
Plik BMP składa się z pierwszych 53 znaczków które oznaczają rozmiar, typ pliku
ilość kolorów itp. W następnych 2563 znaczkach masz podaną paletę obrazka.
Cały problem będzie polegał na znalezieniu 256 najlepszych kolorów. Sprawdzasz w delphi po pixelu jakie mają kolory i wyznaczasz 256 najpotrzebniejszych.
Potem tylko w y
x znaczkach ustalasz jaki pixel to jaki kolor w palecie 256 i zapisujesz wszystko do BMP.

0

Jeżeli chcesz przekonwertować bitmapę na 256 używając palety systemowej to musisz użyć funkcji:
NumerKoloruWPalecieSystemowej:=GetNearestColor(UchwytUrządzenia {np. ekranu} ,KolorDoPrzekonwertowania);
i dla każdego punktu to wykonać. :( Potem tylko przekopiować to do bitmapy z paletą sytemową.

Jeżeli natomiast chcesz użyć innej palety niż systemowej to musisz użyć funkcji:
GetNearestPaletteIndex(UchwytPalety,Palety);

Jeżeli chcesz dokładnie dopasować paletę, to nie ma wyjścia ale musisz tak jak Tp wskazał zrobić histogram (tzn. przelecieć wszystkie piksele i sprawdzić które kolory występują najczęściej, ewentualnie przyporządkować im jakieś wagi i użyć dithering'u)

Problem naprawdę dobrej konwersji jest skomplikowany. Zobacz np. ile sposobów dopasowania palety wynikowej jest w Corel Photo-Paint albo w innych profesjonalnych programach.

Życzę owocnej pracy nad opracowywaniem metody konwersji
--Jest jeszcze jeden błąd ... :)

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