Но получается создать PNG изображение

Вопросы программирования и использования среды Lazarus.

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

Но получается создать PNG изображение

Сообщение artem78 » 09.12.2021 13:07:44

Мне нужно, чтобы WEB-сервер на лету создавал и возвращал PNG картинку.

Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  SysUtils, Classes, httpdefs, fpHTTP, fpWeb, Graphics;

type

  { TFPWebModule1 }

  TFPWebModule1 = class(TFPWebModule)
    procedure DataModuleRequest(Sender: TObject; ARequest: TRequest;
      AResponse: TResponse; var Handled: Boolean);
  private

  public

  end;

var
  FPWebModule1: TFPWebModule1;

implementation

{$R *.lfm}

{ TFPWebModule1 }

procedure TFPWebModule1.DataModuleRequest(Sender: TObject; ARequest: TRequest;
  AResponse: TResponse; var Handled: Boolean);
var
  png: Graphics.TPortableNetworkGraphic;
begin
  png := Graphics.TPortableNetworkGraphic.Create;
  try
    png.SetSize(100, 100);
    png.Canvas.TextOut(10, 10, 'Hello world!');

    AResponse.ContentType:='image/png';
    AResponse.ContentStream := TMemoryStream.Create;
    png.SaveToStream(AResponse.ContentStream);
    AResponse.ContentLength := AResponse.ContentStream.Size;
    AResponse.SendContent;
    AResponse.ContentStream := nil;
  finally
    png.Free;
  end;

  Handled:=true;
end;

initialization
  RegisterHTTPModule('TFPWebModule1', TFPWebModule1);
end.


По непонятным для меня причинам падает на строке png.SetSize с ошибкой External: SIGSEGV.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
artem78
новенький
 
Сообщения: 43
Зарегистрирован: 09.08.2015 18:52:24

Re: Но получается создать PNG изображение

Сообщение wavebvg » 09.12.2021 15:43:03

Что-то мне подсказывает что нужно вначале проверить вот это вариант:
Код: Выделить всё
procedure TFPWebModule1.DataModuleRequest(Sender: TObject; ARequest: TRequest;
  AResponse: TResponse; var Handled: Boolean);
var
  png: Graphics.TPortableNetworkGraphic;
begin
  png := Graphics.TPortableNetworkGraphic.Create;
  try
    png.SetSize(100, 100);
    png.Canvas.TextOut(10, 10, 'Hello world!');
    png.SaveToFile('test.png');
  finally
    png.Free;
  end;   

  Handled:=true;
end;
wavebvg
постоялец
 
Сообщения: 354
Зарегистрирован: 28.02.2008 04:57:35

Re: Но получается создать PNG изображение

Сообщение artem78 » 09.12.2021 15:54:04

wavebvg Решил путём замены модуля на fpimage.
artem78
новенький
 
Сообщения: 43
Зарегистрирован: 09.08.2015 18:52:24


Вернуться в Lazarus

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

Сейчас этот форум просматривают: Google [Bot] и гости: 57

Рейтинг@Mail.ru