【问题标题】:How to convert PDL image to GdkPixbuf如何将 PDL 图像转换为 GdkPixbuf
【发布时间】:2016-12-27 01:50:55
【问题描述】:

我正在尝试在 Gtk3 应用程序中显示由 PDL(使用 PLplot)生成的图形。当我尝试以下代码时,我发现了两个问题:

  1. $pdlImg 不是 GdkPixbuf,因此 new_from_pixbuf() 不起作用。
  2. $pdlImg 似乎为空,因为错误消息将 10x10x3 数组打印为字符串并且它们都是零。

代码:

#!/usr/bin/perl -w

use strict;
use PDL;
use PDL::Graphics::PLplot;
use Gtk3 -init;

my $pdlImg = zeroes(byte, 10, 10, 3);
my $pl = PDL::Graphics::PLplot->new(DEV => 'mem', MEM => $pdlImg);
my $x = sequence(10);
my $y = $x**2;
$pl->xyplot($x, $y);
$pl->close;

my $win = Gtk3::Window->new;
my $img = Gtk3::Image->new_from_pixbuf($pdlImg);
$win->add($img);
$win->show_all;
Gtk3::main();

【问题讨论】:

    标签: perl gtk3 pdl


    【解决方案1】:

    要回答您的第一个问题,您让 PLplot 将绘图放入一个 10 像素宽和 10 像素高的 piddle 中。我不确定在这种情况下您是否只是要获得正常图的一个角,或者您是否要将整个图采样到那些 10x10 像素中。但无论哪种情况,$pdlImg 完全为零也就不足为奇了。尝试在创建 PLplot 绘图对象时传入更大尺寸的 piddle(可能是 1000, 1000, 3),或者甚至使用 MEM => $pdlImg=null

    我无法回答你的第二个问题,我对 Gtk3 没有经验,抱歉。

    【讨论】:

    • 你会想,但是当我在 $pl->close 之后打印 sum($pdlImg) 时,它是零。
    • 澄清:@Derek,当我将大小更改为 500x500x3 并在 $pl->close 后打印 sum($pdlImg) 时,它为零。
    • 我必须相信你的话。好久没用过PLplot了,目前还没有一个可以工作的PDL::Graphics::PLplot,好像没办法安装,也没时间去弄。您可以尝试在 PDL 邮件列表中询问。
    猜你喜欢
    • 2012-05-07
    • 2012-02-18
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2011-08-15
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多