Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#5

Re: 8bit Graustufenbild kopieren mit hilfe von Scanline

  Alt 28. Mär 2006, 21:00
a) Du kannst die Bitmaps eigentlich auch einfach per Dateioperation kopieren.

FileCopy(PChar(ImgPfad+'Img'+inttostr(l)+'.bmp'), PChar(ImgPfad+'SliceImg'+inttostr(k)+'.bmp')); b) Du kannst das Bild auch mit Assign() auf eine andere TBitmap Instanz übertragen lassen.

Delphi-Quellcode:
TempPic.LoadFromFile(ImgPfad+'Img'+inttostr(l)+'.bmp');
SlicePic.Assign(TempPic);
SlicePic.SaveToFile(ImgPfad+'SliceImg'+inttostr(k)+'.bmp');
c) Du hast bei einem PixelFormat von kleiner gleich pf8Bit eine Farbpalette (wie zuvor schon geschrieben). Die ScanLine Daten enthalten keine direkt RGB Farbinformationen mehr!! Die ScanLine Daten ergeben dabei nur einen Index - d.h. welcher Farbe aus der Farbtabelle für den Pixel genommen werden soll. Du musst also neben den Daten auch die Farbtabelle mit kopieren.

Delphi-Quellcode:
for k:=1 to anzslices do
  begin
    for l:=1 to anzpulse do
    begin
      TempPic.LoadFromFile(ImgPfad+'Img'+inttostr(l)+'.bmp');
      zeile:=TempPic.ScanLine[k-1];
      zeile2:=SlicePic.ScanLine[l-1];
      for i:=0 to TempPic.width-1 do
        zeile2^[i] := zeile^[i];
     end;
    SlicePic.Palette := CopyPalette(TempPic.Palette);
    SlicePic.SaveToFile(ImgPfad+'SliceImg'+inttostr(k)+'.bmp');
   end;
  Mit Zitat antworten Zitat