Delphi Can
PByteArray Tcolor cevirme? - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (https://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: PByteArray Tcolor cevirme? (/showthread.php?tid=5207)



PByteArray Tcolor cevirme? - woywod - 25-08-2020

Merhabalar ben bir resim dosyasını okutuyorum  8bit olarak bunlar Byte olarak geliyor ama dogru rengi alamıyorum.
Hata Nerede acaba ?



procedure TForm1.BitBtn1Click(Sender: TObject);
type

 pbyte = PByteArray; // use a PByteArray for pf8bit color
var
 x,y : Integer;
  renk:TColor;
 BitMap : TBitMap;
 P: pbyte;

begin

 BitMap := TBitMap.create;

  try
   BitMap.LoadFromFile('A.bmp');
  BitMap.PixelFormat:=pf8bit;

   for y := 0 to BitMap.Height - 1 do
     begin
      P :=BitMap.ScanLine[y];

    for x := 0 to BitMap.Width -1 do

     Begin

       renk:=(P[x]);  //Burda byte Tcolor ' dönüstüremedim

     
     end;
       inc(x ,3);
   end;

 finally
   BitMap.Free;

 end;

end;



PByteArray Tcolor cevirme? - sabanakman - 27-08-2020

ByteArray'ı stream olarak kayıt edin ve streamden yüklemeye çalışın resmi.

Örnek: https://www.delphican.com/showthread.php?tid=3071


Cvp: PByteArray Tcolor cevirme? - woywod - 27-08-2020

(27-08-2020, Saat: 18:52)sabanakman Adlı Kullanıcıdan Alıntı: ByteArray'ı stream olarak kayıt edin ve streamden yüklemeye çalışın resmi.

Örnek: https://www.delphican.com/showthread.php?tid=3071

Tesekur ederım.


Cvp: PByteArray Tcolor cevirme? - woywod - 28-08-2020

8 bit resimden Renk Alabiliyoruz artık :Smile
Bunu da ögrenmiş olduk..
palet degerlerinin içine atıyoruz..

procedure TForm1.Button1Click(Sender: TObject);
type

 pbyte = PByteArray; // use a PByteArray for pf8bit color
var
 x,y : byte;
  renk1:TColor;
 BitMap : TBitMap;
 P: pbyte;

  say,i:Integer;
  renk: array [0..255] of TColor;
 palet:TMaxLogPalette;
 fBitmapPalEntries: Cardinal;
 R, G, B: Byte;
begin
  say:=0;
 BitMap := TBitMap.create;
  BitMap.LoadFromFile('A.bmp');
  try

  BitMap.PixelFormat:=pf8bit;
  fBitmapPalEntries := GetPaletteEntries(Bitmap.Palette, 0, 256,palet.palPalEntry);
   for i := 0 to fBitmapPalEntries - 1 do
   begin
     renk[i] :=
       palet.palPalEntry[i].PeBlue shl 16
     + palet.palPalEntry[i].PeGreen shl 8
     + palet.palPalEntry[i].PeRed;
   end;


   for y := 0 to BitMap.Height - 1 do
     begin
      P :=BitMap.ScanLine[y];

    for x := 0 to BitMap.Width -1 do

     Begin
         R := palet.palPalEntry[P[x]].peRed;
         G := palet.palPalEntry[P[x]].peGreen;
         B := palet.palPalEntry[P[x]].peBlue;
       renk1:=RGB(r,g,b) ;//Burda Renk degerini alabılıyoruz..


       end;
    end;
 finally
   BitMap.Free;

 end;

end;



PByteArray Tcolor cevirme? - maxpaynen - 29-06-2021

R := palet.palPalEntry[P[x]].peRed;
G := palet.palPalEntry[P[x]].peGreen;
B := palet.palPalEntry[P[x]].peBlue;
renk1:=RGB(r,g,b)

Yerine

R=P^[x].rgbtRed;
G=P^[x].rgbtGreen;
B=P^[x].rgbtBlue;

renk1:=RGB(r,g,b);
kullanılabilir. P = PByte , rgb = Byte olduğundan muhtemelen çalışır.