Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
RGB den PByteArray' a
#1
merhaba Bu konuda Takıldım kaldım ilerleyemedım...
Ben burda   PByteArray da RGB degeri alabildim ve Tcolor 'a Cevirdım ama simdide Tcolor yanı bir rengimi [P[x]] içine nasıl atarım .. PByteArray  Tekrar nasıl Dönüşüm saglarım..
yani tersine işlem ..
yardımcı olursanız sevinirım.

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..
//Burda işlemi tersine yapmak istiyorum [P[x]] içine nasıl deger atarım..


    end;
 end;
finally
BitMap.Free;

end;
Cevapla
#2
(04-09-2020, Saat: 17:13)woywod Adlı Kullanıcıdan Alıntı: merhaba Bu konuda Takıldım kaldım ilerleyemedım...
Ben burda   PByteArray da RGB degeri alabildim ve Tcolor 'a Cevirdım ama simdide Tcolor yanı bir rengimi [P[x]] içine nasıl atarım .. PByteArray  Tekrar nasıl Dönüşüm saglarım..
yani tersine işlem ..
yardımcı olursanız sevinirım.

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..
//Burda işlemi tersine yapmak istiyorum [P[x]] içine nasıl deger atarım..


    end;
 end;
finally
BitMap.Free;

end;
Sadece Palette ki Renk Numarasını yazmamız yeterliymiş :Smile Cok ta uğraşmıştım... Cok kolaymış 
 
RowOut[x]:=Byte(186);//palet Numarası 0..255 Kadar NUmara yazılabilir..
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  PByteArray Tcolor cevirme? woywod 4 2.152 29-06-2021, Saat: 01:52
Son Yorum: maxpaynen



Konuyu Okuyanlar: 1 Ziyaretçi