Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.26;
Скачать: CL | DM;

Вниз

Рисование прямо на Bitmapе   Найти похожие ветки 

 
$HiC0 ©   (2003-05-13 15:15) [0]

Мне требуется добавить шума в некоторое изображение... размер которого 300 на 300, чего и я делаю следующим образом:
procedure TForm1.NoiseBtnClick(Sender: TObject);
type TArrayInt= array of Integer;
var i,j : integer;
P : PByteArray;
A : array of TArrayInt;
k : byte;
Bitmap : TBitmap;
Begin
Randomize;
BitMap := TBitMap.create;
Bitmap := Image2.Picture.Bitmap;
SetLength(A,Bitmap.height,BitMap.width);
for i := 0 to Bitmap.height-1 do
begin
P := BitMap.ScanLine[i];
for j := 0 to BitMap.width-1 do
Begin
k:=Random(255);
A[i][j]:=P[j];
P[j] := k;
End;
end;
Image2.Picture.Bitmap:=Bitmap;
end;

В результате рисунок зашумеляется не полностью, почему непонятно, т.е. такое ощущение что BitMap.width-1 и Bitmap.height-1 гораздо меньше 299... хорошо дай думаю в ручную поставлю эти значения... результат тот-же самый... в случае если циклы кручу больше чем до 300, вполне обоснованно возникает ошибка... складывается дурацкое ощущение что я работаю с пикселами разного размера :) причем по вертикали все работает как надо а по горизонтали зашумляется меньше чем на треть... что делать?
Заранее спасибо...


 
MBo ©   (2003-05-13 15:21) [1]

Какой PixelFormat?
Ты работаешь как с 8-битным.


 
$HiC0 ©   (2003-05-13 15:24) [2]

Большое спасибо, понимаю как мало я знаю :)


 
Sandman25   (2003-05-13 16:47) [3]

Я думаю, что на пиксель выделяется больше 1 байта - скорее всего 4 (если зашумляется меньше, чем на треть, как Вы написали). Тогда надо k:=Random(2 shl 31), а P объявить как PInteger.
Еще надо удалить BitMap := TBitMap.create.



Страницы: 1 вся ветка

Текущий архив: 2003.05.26;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
1-83515
sosv
2003-05-13 15:09
2003.05.26
URL


14-83648
Vlad Oshin
2003-05-05 12:58
2003.05.26
Переставил OSь, забыл импортнуть из аськи, всех посеял :(


14-83656
-=DeMoH=-
2003-05-05 12:56
2003.05.26
Как работать с ASP?


14-83741
Renegate
2003-05-07 14:35
2003.05.26
Epson 680.


1-83568
NAlexey
2003-05-14 09:23
2003.05.26
Заставить TEdit не пищать