подскажите в чем дело,вот рабочий код
Код:
procedure TForm1.Button8Click(Sender: TObject);
var i,j:integer;
begin
if (OpenPictureDialog1.Execute) and FileExists(OpenPictureDialog1.FileName) then
begin
bp:=TBitmap.Create;
if copy(form1.OpenPictureDialog1.FileName,length(form1.OpenPictureDialog1.FileName)-2,3)='bmp' then
bp.LoadFromFile(form1.OpenPictureDialog1.FileName)
else
begin
bpj:=TJPEGImage.Create;
bpj.LoadFromFile(form1.OpenPictureDialog1.FileName);
bp.Assign(bpj);
bpj.Free;
end;
end;
SetLength(pic,bp.Width,bp.Height);
for i:=0 to bp.Width-1 do
for j:=0 to bp.Height-1 do
pic[i,j]:=bp.Canvas.Pixels[i,j];
for i:=0 to bp.Width-1 do
for j:=0 to bp.Height-1 do begin
r:=getrvalue(pic[i,j]); g:=getgvalue(pic[i,j]); b:=getbvalue(pic[i,j]);
r:=round(r/(255/5))*round(255/5);
g:=round(g/(255/5))*round(255/5);
b:=round(b/(255/5))*round(255/5);
pic[i,j]:=(b*65536)+(g*256)+r
end;
for j:=0 to bp.Height-1 do
for i:=0 to bp.Width-1 do
bp.Canvas.Pixels[i,j]:=pic[i,j];
bp.SaveToFile(home+'itog.bmp');
bp.Free;
если ставлю в функцию значение 4 (самое нужное мне) не работает
если ставлю любое другое 3 5 6 7 8 9 10 всё работает)
Код:
r:=round(r/(255/4))*round(255/4);
g:=round(g/(255/4))*round(255/4);
b:=round(b/(255/4))*round(255/4);