如何使用 GD::Barcode 设置图像大小

Posted

技术标签:

【中文标题】如何使用 GD::Barcode 设置图像大小【英文标题】:How to set image size using GD::Barcode 【发布时间】:2010-12-28 16:26:53 【问题描述】:

我当然是使用 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);

  

谢谢。

【问题讨论】:

注意:是的,在标签 " /> 中更改图像大小很容易,但这不是我想要的。主要是因为 Chrome 倾向于对“缩放”的图像进行抗锯齿处理。 您能否在答案部分发布解决方案,以便我们将其从未答复列表中删除?谢谢! 【参考方案1】:

解决了!!!

我只需要意识到这一点

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

返回一个 GD::Image 实例。

感谢写了 Image::Resize 的 Sherzod B. Ruzmetov。

这是新的解决方案:


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


希望这对其他人有所帮助。

【讨论】:

以上是关于如何使用 GD::Barcode 设置图像大小的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 GhostScript 设置 PDF 文件的输出图像大小限制

SwiftUI:如何找到图像的高度并使用它来设置框架的大小

如何在 JavaFX 中将图像设置为按钮的大小

如何在图像视图中将图像设置为适合屏幕

如何设置图像大小以改善 OCR 输出。?

如何设置 UINavigation 大小以适合背景图像大小?