Главная страница
    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.006 c
3-83344
Seven
2003-05-05 06:54
2003.05.26
Upper в Interbase


8-83615
IvanUdalov@mail.ru
2003-02-10 12:24
2003.05.26
генерация звука


14-83679
-=DeMoH=-
2003-05-04 12:56
2003.05.26
КАК УЗНАТЬ, ЧТО НУЖНО ПРОГЕ?


14-83699
KIR
2003-05-05 12:59
2003.05.26
Событие OnCellClick компонента TDBGrid


1-83532
BJValentine
2003-05-13 11:05
2003.05.26
Сетевые пути





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский