Как установить размер изображения с помощью GD :: Barcode - PullRequest
3 голосов
/ 28 декабря 2010

Я, конечно, использую GD :: Barcode для генерации штрих-кодов, но не нашел способа установить ширину изображения.Как я могу это сделать?Вот что я делаю в своем приложении (Mojolicious):

  #action that generates an image/png barcode which is embedded in the html
  use GD::Barcode::EAN8;
  use Time::Seconds
  sub barcode {
        my ($c) = @_;
        my $barcode_id = $c->stash('barcode_id');
        $c->app->log->debug('Generating barcode:' . $barcode_id);
        my $img_data = GD::Barcode::EAN8->new($barcode_id)->plot->png;

        $c->res->headers->content_type('image/png');
        $c->res->headers->header(
            'Cache-Control' => 'max-age=' . ONE_MONTH . ', must-revalidate, private');
        $c->render_data($img_data);

  }

Спасибо.

1 Ответ

0 голосов
/ 20 мая 2011

Решено !!!

Мне просто нужно было понять, что

GD::Barcode::EAN8->new($barcode_id)->plot;

возвращает экземпляр GD :: Image.

Спасибо Шерзоду Б. Рузметову, который написал Image :: Resize.

и вот новое решение:


use Time::Seconds
#...
#generate an image/png barcode which is embedded in the html
require Image::Resize ;
GD::Image->trueColor( 0 );#turn it off since Image::Resize turned it on
require GD::Barcode::EAN8;

sub barcode {
    my ($c) = @_;
    my $barcode_id = $c->stash('barcode_id');
    $c->app->log->debug('Generating barcode:' . $barcode_id);
    my $img = GD::Barcode::EAN8->new($barcode_id)->plot();
    my $img_data = Image::Resize->new($img)->resize(100, 80,1)->png;
    $c->res->headers->content_type('image/png');
    $c->res->headers->header(
        'Cache-Control' => 'max-age=' . ONE_MONTH . ', must-revalidate, private');
    $c->render_data($img_data);

}

Надеюсь, это поможет кому-то еще.

...