2010-12-28 1 views
2

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

#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); 

    } 

Спасибо.

+0

Примечание: Да, это легко просто изменить размер изображения в теге , но это не Wath я хочу в основном потому, что Chrome имеет тенденцию сглаживать к. „Увеличенных“ изображения. –

+0

Можете ли вы опубликовать решение в разделе ответов, чтобы мы могли получить это из списка без ответа? Спасибо! –

+0

сделано, Bill the Lizard –

ответ

0

Решенный !!!

мне просто нужно понимать, что

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

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

Спасибо Sherzod B. Ruzmetov, который написал 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); 

} 

Надеется, что это помогает кто-то другое.