Создание изображения с текстом с помощью Perl's Image :: Magick - PullRequest
1 голос
/ 17 января 2020

Я работаю над некоторыми примерами для ланча-н-учения, рассказывающего о заголовках контекста HTTP и о некоторых вещах, для которых они используются. Я решил добавить немного бликов в вещи, чтобы создать изображение с помощью Perl's Image :: Magick.

Благодаря комментарию к этому оригинальному сообщению я узнал, что проблема заключается в отсутствии Content-Length. Как получить правильную длину контекста из изображения?

PS Я настроил Content-Type, чтобы сделать его прописным.

#!/perl/bin/perl.exe

use Image::Magick;

$image = Image::Magick->new;
$image->Set(size=>'100x100');
$image->ReadImage('canvas:white');
$image->Set('pixel[49,49]'=>'red');

$text = 'Works like magick!';
$image->Annotate(font=>'kai.ttf', pointsize=>40, fill=>'green', text=>$text);

print "Content-Type: image/png\n\n";
binmode STDOUT;
$image->Write('png:-');

1 Ответ

2 голосов
/ 17 января 2020

Почему не Mojolicious ( Удивительный веб-фреймворк в реальном времени )?

use Mojolicious::Lite;

use Image::Magick;

get '/' => sub {
  my $c = shift;

  ...

  $c->render( data => $image->ImageToBlob( magick => 'png' ), format => 'png' );
};

app->start;

запустите его с perl my_script.pl daemon

И откройте в браузере localhost: 3000

Или исправьте исходный код:

#!/usr/bin/env perl

use strict;
use warnings;

use Image::Magick;

my $image = Image::Magick->new;
$image->Set( size => '200x200' );
$image->ReadImage( 'canvas:white' );
$image->Set( 'pixel[49,49]' => 'red' );

$image->Annotate(
    font      => 'kai.ttf',
    pointsize => 22,
    fill      => 'green',
    text      => 'Works like magick!',
    gravity   => 'northwest',
);

my $img_size;
my $img_data = $image->ImageToBlob( magick => 'png' );

{
    use bytes;
    $img_size = length $img_data;
}

binmode STDOUT;
print <<EOD;
Content-Type: image/png
Content-Length: $img_size

$img_data
EOD
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...