Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.139.104.59] |
|
Сообщ.
#1
,
|
|
|
Мне нужно получить первый пиксель левого верхнего угла в формате RGB и альфа-канал с помощью Delphi7. Первый левый верхний пиксель (66,78,66) а альфа-канал 255. Пример на скриншоте.
Прикреплённый файлimg1.jpg (80,97 Кбайт, скачиваний: 8) Как можно получить эти данные и записать их в массив, кроме того чтобы убедиться в полученных данных вывести через Edit1. Исходники загрузки изображения. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) Image1: TImage; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; bmp1: TBitmap; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin bmp1 := TBitmap.Create; bmp1.LoadFromFile('.\bitmap\img2.bmp'); // chargement du niveau Form1.Image1.Canvas.Brush.Color:=clWhite; Form1.Image1.Canvas.FillRect(Form1.Image1.ClientRect); Image1.Canvas.Draw(0,0,bmp1); end; end. Прикреплённый файлExample1.zip (116,77 Кбайт, скачиваний: 4) |
Сообщ.
#2
,
|
|
|
Никак, предоставленный битмап 24-хбитный, для альфа канала надо 32 бита
Без альфы так: var Color: Longint; r, g, b: Byte; begin Color := ColorToRGB(image1.Canvas.Pixels[0, 0]); r := Color; g := Color shr 8; b := Color shr 16; showmessage(Format('RGB: %d, %d, %d',[r, g, b])); end; |
Сообщ.
#3
,
|
|
|
Gonarh, а как пройтись по всем пикселям в цикле по рядам. Сначала первый ряд потом второй ряд и т.д. получить RGB и занести цифры(RGB) в одномерный массив.
|
Сообщ.
#4
,
|
|
|
медленно - через Pixels
Быстро, учитывая формат пиксела - через ScanLine |