![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте,подскажите как сделать чтобы программа присваивала значение пикселя с картинки в ячейку программы?картинка в формате bmp(самый простой вариант на мой взгляд),надо чтоб прога брала 1 пиксель картинки и заносила инфу о цвете в 1 ячейку,потом 2 пиксель во 2 ячейку и так далее.
|
|
#2
|
|||
|
|||
|
По простому - что-то типа:
Код:
var
I, J : Integer;
A : Array Of Array DWORD;
begin
setLength(A,Bitmap.Width,Bitmap.Height);
For I := 0 To ABitmap.Width-1 Do
For J := 0 To ABitmap.Height-1 Do
A[I,J] := Bitmap.Canvas.Pixels[I,J]Но это долго. Поищи пример использования ScanLine. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
player891 (16.03.2012)
| ||
|
#3
|
|||
|
|||
|
Код:
var
Form1: TForm1;
bp:TBitmap;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
bp:=TBitmap.Create;
bp.LoadFromFile('ball.bmp');
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
begin
StringGrid1.ColCount:=bp.Width;
StringGrid1.RowCount:=bp.Height;
for i:=1 to bp.Width do
for j:=1 to bp.Height do
StringGrid1.Cells[j-1,i-1]:=IntToStr(bp.Canvas.Pixels[i,j]);
end; |
|
#4
|
||||
|
||||
|
Норм
, но только медленно. Всё-таки разберись со ScanLine - гораздо быстрее будет.P.S. А если картинка хотя бы 800 на 600 будет? Это что же со StringGrid-ом станется, представить страшно. ![]() |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
player891 (18.03.2012)
| ||
|
#5
|
|||
|
|||
|
Большое всем спасибо за советы,подскажите как бы мне теперь из массива ,в который записывались значения пикселей из бмп файла,записать эти значения в бмп файл?то есть обратная манипуляция,проверка.
|
|
#6
|
||||
|
||||
|
Обратно, оно и есть обратно:
взять пиксел Код:
... StringGrid1.Cells[j-1,i-1]:=IntToStr(bp.Canvas.Pixels[i,j]); вернуть обратно Код:
... bp.Canvas.Pixels[i,j] := StringToColor(StringGrid1.Cells[j-1,i-1], 0); |