и еще вопрос по преобразованию в чб.
сейчас юзаю этот код(в процедуру отправляю номер картинки из массива,и эта картинка делается чернобелой).
И если картинка в моём массиве уже стала чернобелой посредством данной процедуры,то во второй раз при попытке jpeg'y присвоить эту черонбелую картинку появляется ошибка.сдела пока через try except,но хочется разобраться изза чего это получается
Код:
type
TRGB=record
b,g,r : byte;
end;
Type
ARGB=array [0..1] of TRGB;
PARGB=^ARGB;
procedure TForm1.BlackWhite(nomerikonki:Integer);
var
i, j, c : integer;
p : PARGB;
bw_image:tbitmap;
tmpjpeg:TJPEGImage;
begin
tmpjpeg:=TJPEGImage.Create;
try
tmpjpeg.Assign(ims[nomerikonki].Picture);
except Exit end;
bw_image:=TBitmap.Create;
bw_image.Assign(tmpjpeg);
bw_image.PixelFormat:=pf24bit;
for i:=0 to bw_image.Height-1 do
begin
p:=bw_image.ScanLine[i];
for j:=0 to bw_image.Width-1 do
begin
c:=round(0.3*p[j].r+0.59*p[j].g+0.11*p[j].b);
// if c>=128 then c:=255 else c:=0; //эту строку надо убрать чтобы получить градации серого
p[j].r:=c;
p[j].g:=c;
p[j].b:=c;
end;
end;
ims[nomerikonki].Picture.Assign(bw_image);
tmpjpeg.Free;
bw_image.Free;
end;