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
#5
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.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  WebBrowser1 Gelen Veriyi Pdf e Çevirme sadoal351 6 1.137 26-07-2023, Saat: 18:38
Son Yorum: nguzeller
  Sesi Yazıya Çevirme 2023 gonulali 1 739 30-01-2023, Saat: 11:59
Son Yorum: Halil Han BADEM
  Html veya Xml pdf e çevirme ahmet6513 11 2.618 02-01-2023, Saat: 15:22
Son Yorum: ahmet6513
  HL7 veya ASTM formatını JSON a çevirme yokbi 0 617 12-06-2021, Saat: 22:57
Son Yorum: yokbi
  Sayıyı Yazıya Çevirme delphi-x 2 2.877 10-05-2021, Saat: 19:10
Son Yorum: akuyumcu63



Konuyu Okuyanlar: 1 Ziyaretçi