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

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

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

Сообщение shyub » 05.03.2016 11:52:30

Необходимо при сохранении изображения изменить его 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?
shyub
постоялец
 
Сообщения: 112
Зарегистрирован: 25.11.2014 23:15:19

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

Сообщение Vadim » 05.03.2016 16:21:40

shyub
Насколько я понял, там используются типы, которые на платформе .NET. Но поскольку FreeImage используется для Andorra 2D (есть версии для Delphi и Lazarus), то Вы можете либо использовать у себя эту библиотеку (она GPL), либо посмотреть в ней, как они эти функции там объявили.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

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

Сообщение Jargar » 05.03.2016 22:52:37

Код: Выделить всё
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};

Из изходников.
Jargar
новенький
 
Сообщения: 21
Зарегистрирован: 06.11.2007 14:42:24


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

Рейтинг@Mail.ru