Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

с неимоверной силой лезут 255 в данные


vilfred ©   (2002-12-10 16:49:00) 

При считывании яркости пикселя с картинки(высота и ширина VidH и VidW соответственно) в двумерный массив:

const VidH=255; VidW=377;
....
if OpenDialog1.Execute then
begin
BitMap1 := TBitMap.Create;
BitMap2 := TBitMap.Create;
try
BitMap1.LoadFromFile(OpenDialog1.FileName);
BitMap2.Assign(BitMap1);
BitMap2.Dormant;
BitMap2.FreeImage;
Image3.Canvas.Draw(0,0,BitMap2);
BitMap2.Monochrome := true;
BitMap2.ReleaseHandle;
for x:=0 to VidH-1 do begin
ee:=x;
for y:=0 to VidW-1 do begin
mas[x][y]:=byte(Image3.Canvas.Pixels[x,y])// and $ff);
end;
end;
Canvas.TextOut(100,295,
IntToStr(byte(Image3.Canvas.Pixels[112,160] and $ff)));
finally
BitMap1.Free;
BitMap2.Free;
end;
Graphic;
end;

каждая строка начинает заполняться значением 255 на 241 шаге цикла, когда заполняю массив mas, т.е. недостача данных выходит ну и соответственно все идет лесом :(( ...

Но, если я делаю одномерный массив(и соответственно цикл по этому делу один) строчкой mas[x]:=byte(Image3.Canvas.Pixels[x,150]) вместо показанной mas[x][y]:=byte(Image3.Canvas.Pixels[x,y]), то заполнение данных происходит нормально, т.е. 255 нигде не появляются. Картинка нормальная, не битая, содержит 255 градаций серого. В той точке изображения где беру при помощи byte(Image3.Canvas.Pixels[x,y]) нет значения 255, т.е. не белый цвет... т.е. в массиве на данной строке и в данном столбце не должно быть значения 255.

Может быть дело в способе загрузки картинки? Или может быть надо взять цвет пикселя как-то по другому?


vilfred   (2002-12-10 18:17:00) [1]

да это я похоже с размерами массива наглючил че-то очень сильно... вроде как все теперь сходится. т.е. это моя ошибка.


Subfire   (2002-12-10 17:17:00) [2]

mas глоюальная или локальная?
если локальная попробуй:
FillChar(mas,sizeof(mas),0);


Наверх

Титульная страница Поиск, карта сайта Написать письмо