2016-08-19 3 views
2

Ich versuche, ein Diagramm von PDL (mit PLplot) innerhalb einer Gtk3-App generiert zu erstellen. Wenn ich den folgenden Code versuche, sehe ich zwei Probleme:Wie konvertiert man PDL-Bild in GdkPixbuf

  1. $ pdlImg ist kein GdkPixbuf also new_from_pixbuf() funktioniert nicht.
  2. $ pdlImg scheint leer zu sein, da die Fehlermeldung das 10x10x3-Array als Zeichenfolge ausgibt und sie alle aus Nullen bestehen.

Code:

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

Antwort

1

Um Ihre erste Frage zu beantworten, die Sie haben PLplot die Handlung in eine piddle setzen, die 10 Pixel breit und 10 Pixel hoch ist. Ich bin mir nicht sicher, ob Sie in diesem Fall nur eine Ecke des normalen Plots bekommen oder ob Sie die ganze Plot-Probe in diese 10x10 Pixel bekommen. Aber in jedem Fall ist es keine Überraschung, dass $pdlImg ganz Nullen ist. Versuchen Sie, eine Piddle mit größerer Größe (vielleicht 1000, 1000, 3) zu übergeben, oder vielleicht sogar MEM => $pdlImg=null, wenn Sie das Plplot-Plot-Objekt erstellen.

Ich kann nicht mit Ihrer zweiten Frage helfen, ich habe keine Erfahrung mit Gtk3, sorry.

+0

Sie würden denken, aber wenn ich Summe ($ pdlImg) nach $ pl-> schließen, ist es Null. – TheAmigo

+0

Klarstellung: @Derek, Wenn ich die Größe zu 500x500x3 ändern und Summe ($ pdlImg) nach $ pl-> schließen, ist es Null. – TheAmigo

+0

Ich muss dein Wort dafür nehmen. Ich habe PLplot schon lange nicht mehr benutzt, habe im Moment keinen funktionierenden PDL :: Graphics :: PLplot, kann es anscheinend nicht installieren und habe keine Zeit, mich damit zu beschäftigen. Sie könnten versuchen, auf der PDL-Mailing-Liste zu fragen. – Derek