Страница 1 из 1

Как изменить DPI-изображения по аналогии с C#

СообщениеДобавлено: 05.03.2016 11:52:30
shyub
Необходимо при сохранении изображения изменить его DPI. В библиотеке FreeImage.dll есть для этих целей две функции. На https://sourceforge.net/p/freeimage/discussion/36110/thread/a11dc8b1/ приводится пример для C#:
Код: Выделить всё
[DllImport(dllName, EntryPoint="FreeImage_SetDotsPerMeterX")]
public static extern void SetDotsPerMeterX(FIBITMAP dib, uint res);
[DllImport(dllName, EntryPoint="FreeImage_SetDotsPerMeterY")]
public static extern void SetDotsPerMeterY(FIBITMAP dib, uint res);
.......................................................................
FreeImage.SetDotsPerMeterX(image,FreeImage.GetDotsPerMeterX(inputImage));
FreeImage.SetDotsPerMeterY(image,FreeImage.GetDotsPerMeterY(inputImage));

Как этот код можно интерпретировать для FPC?

Re: Как изменить DPI-изображения по аналогии с C#

СообщениеДобавлено: 05.03.2016 16:21:40
Vadim
shyub
Насколько я понял, там используются типы, которые на платформе .NET. Но поскольку FreeImage используется для Andorra 2D (есть версии для Delphi и Lazarus), то Вы можете либо использовать у себя эту библиотеку (она GPL), либо посмотреть в ней, как они эти функции там объявили.

Re: Как изменить DPI-изображения по аналогии с C#

СообщениеДобавлено: 05.03.2016 22:52:37
Jargar
Код: Выделить всё
const
  FIDLL = {$IFDEF MSWINDOWS}'FreeImage.dll';{$ENDIF}
          {$IFDEF LINUX}'libfreeimage.so';{$ENDIF}
          {$IFDEF MACOS}'libfreeimage.dylib';{$ENDIF}
procedure FreeImage_SetDotsPerMeterX(dib: PFIBITMAP; res: Cardinal); {$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  external FIDLL {$IFDEF WIN32}name '_FreeImage_SetDotsPerMeterX@8'{$ENDIF}
  {$IFDEF MACOS}name '_FreeImage_SetDotsPerMeterX'{$ENDIF};
procedure FreeImage_SetDotsPerMeterY(dib: PFIBITMAP; res: Cardinal); {$IFDEF MSWINDOWS}stdcall;{$ELSE}cdecl;{$ENDIF}
  external FIDLL {$IFDEF WIN32}name '_FreeImage_SetDotsPerMeterY@8'{$ENDIF}
  {$IFDEF MACOS}name '_FreeImage_SetDotsPerMeterY'{$ENDIF};

Из изходников.