Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
PByteArray Tcolor cevirme?
#1
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;
Cevapla
#2
ByteArray'ı stream olarak kayıt edin ve streamden yüklemeye çalışın resmi.

Örnek: https://www.delphican.com/showthread.php?tid=3071
Cevapla
#3
(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.
Cevapla
#4
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;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  RGB den PByteArray' a woywod 1 245 05-09-2020, Saat: 17:41
Son Yorum: woywod
  FastReport yazıya çevirme adelphiforumz 4 2.254 11-04-2020, Saat: 22:46
Son Yorum: akuyumcu63
  Hex bir değeri, 37 bit integer değere çevirme Adem Kurt 5 1.160 14-01-2020, Saat: 09:30
Son Yorum: adelphiforumz
  C# kodu Delphi ye çevirme dkadir 2 945 28-11-2019, Saat: 15:11
Son Yorum: dkadir
  Edit Sayı Çevirme OZCANK 13 3.208 10-09-2019, Saat: 15:43
Son Yorum: faktoral



Konuyu Okuyanlar: 1 Ziyaretçi