Показать сообщение отдельно
  #4  
Старый 22.12.2011, 19:28
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

и еще вопрос по преобразованию в чб.
сейчас юзаю этот код(в процедуру отправляю номер картинки из массива,и эта картинка делается чернобелой).
И если картинка в моём массиве уже стала чернобелой посредством данной процедуры,то во второй раз при попытке 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;
Ответить с цитированием