如何将PDL图像转换为GdkPixbuf

时间:2016-08-19 20:00:49

标签: perl gtk3 pdl

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

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

    #!/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();
    

1 个答案:

答案 0 :(得分:1)

要回答你的第一个问题,你正在让PLplot把这个情节放到一个10像素宽,10像素高的小提琴中。在这种情况下,我不确定你是否只是想获得正常情节的一个角落,或者如果你将整个情节采样到那些10x10像素中。但在任何一种情况下,$pdlImg完全为零都不足为奇。在创建PLplot绘图对象时,尝试传入更大尺寸的小提琴(可能是1000, 1000, 3),或者甚至使用MEM => $pdlImg=null

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