zczytywanie piksela z jpga

0

Witam.
Jestem w trakcie pisania programu, ktory porownuje roznymi metodami jakosc skompresowanego jpg w porownaniu do oryginalnej bmp. Oblicza np. znormalizowana korelacje skrosna, laplasjanowy blad sredniokwadratowy itp. przyjemne rzeczy :)
Pojawil sie problem przy zczytywaniu piksela z jpgow (do obliczania tych funkcji sa mi potrzebne wartosci piksela w zadanym punkcie). Niestety zwykly canvas.pixels dziala tylko przy bmp, a przy jpg wyskakiwal mi blad, ze delphi nie wie co to jest canvas :)
probowalem sztuczki, zeby obiekt jpg dziedziczyl z tbitmap, ale wtedy blednie wczytuje sie jpg. Czy ktos moglby mi poradzic jak rozwiazac ten problem?

procedure TMainForm.editcount1Click(Sender: TObject);
begin
for i:=1 to mj do
begin
for j:=1 to nj do
begin
pix1:=bitmapka.Canvas.Pixels[i,j];
pix2:=jpgmapka.Canvas.pixels[i,j];
suma1:=suma1+((pix1-pix2)/mj*nj);
end;
end;
wynik:=suma1;
labelededit1.text:=floattostr(wynik);
suma1:=0;
end;

To jest przyklad jednej z procedur. Jpgmapka dziedziczy tu po bmp, a gdy dziedziczenie ustawie na TJPGImage to nie widzi canvasa :(
Z gory dziekuje.

0

Klasa BMP'y nie powinna dziedziczyć z JPEG'a. Poczytaj o .Assign.

0

Zle mnie zrozumiales. To nie bmp dziedziczy po jpg tylko jpg po bitmapie i to juz wiem ze jest zle :) Ale jak w takim razie odczytac wartosc (kolor) piksela z jpg? Przy bitmapie wystarczy canvas.pixels, ale z jpg to nie dziala :(

0

bo musiasz przerobic na bitmape.
poczytaj o assign jak juz wspomnial przedmowca :)

0

Nie wiem czy dokładnie o to chodzi ale tu jest kodzik który wyświetla nazwe koloru
pixela o pozycji x i y oraz ładuje tenże Jpeg do Image.

procedure TForm1.Button1Click(Sender: TObject);
var
 b: TBitmap;
 j: TJPEGImage;
begin
 j:=TJPEGImage.Create;
 b:=TBitmap.Create;
 j.LoadFromFile('jpg.jpg');
 b.Assign(j);
 Image1.Picture.Bitmap:=b;
 b.Free;
 j.Free;
 Form1.Caption:=ColorToString(Image1.Picture.Bitmap.Canvas.Pixels[x,y]);
end;

// A tak nawiasem mówiąc to czy to nie powinno być w Newbie :/
// W newbie znajduja sie losowe tematy :> Tego akurat automat nie wylosowal :P - Pedros

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