Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];

Вниз

Рисование прямо на 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.009 c
3-83357
Avreliy
2003-05-05 15:21
2003.05.26
Отображение значений поля выборки на управляющей сетке!


1-83540
val20022002
2003-05-13 17:18
2003.05.26
TTimer


3-83375
maksimenkon
2003-05-06 11:37
2003.05.26
MSSQL, Как програмно создать базу?


14-83712
XobBIT
2003-05-02 16:16
2003.05.26
Вопрос про CGI


6-83630
BGV
2003-03-25 11:27
2003.05.26
NMFTP-компонент висит при вызове метода List





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский