Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > разрешение bmp


Автор: bagos 1.11.2009, 21:58
делаю скрин экрана, вытаскиваю нужную мне область с числами. затем сохраняю в bmp. скармливаю файнридеру, но он ругается что мол разрешение должно быть не меньше 300 dpi !!!!
как решить?

Добавлено через 21 секунду
изменение размеров bmp результата не дало

Автор: RomanEEP 1.11.2009, 23:19
Код

procedure SetBmpDPI(Bitmap, 300);

procedure SetBmpDPI(Bitmap: TBitmap; DPI: Integer);
var
  Stream: TMemoryStream;
  Data: Word;
begin
  try
    Stream := TMemoryStream.Create;
    Bitmap.SaveToStream(Stream);
    Data := Round(DPI * 39.370079);
    Stream.Position := 38;
    if Stream.Write(Data, 2) = 2 then
    begin
      Stream.Position := 42;
      if Stream.Write(Data, 2) = 2 then
      begin
        Stream.Position := 0;
        Bitmap.LoadFromStream(Stream);
      end
      else
        raise Exception.Create('Stream write error);
    end
    else
      raise Exception.Create('Stream write error);
  finally
    Stream.Free;
  end;
end;

Автор: Alexeis 1.11.2009, 23:20
У битмапки есть такой параметр. Количество точек на дюйм, задается в его полях, однако это поле не всегда содержит правильную инфу, потому что ей мало кто пользуется кроме файн ридера. Сканер ее заполняет, а вот графические редакторы могут запросто удалить. Можно написать маленькую программу, которая будет лечить такие битмапки. Поле расположено в BitmapInfoHeader (см. MSDN)

Добавлено через 1 минуту и 34 секунды
  Упс. RomanEEP опередил smile .

Автор: bagos 1.11.2009, 23:40
спасибо, парни))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)