2016-08-19 2 views
2

Gtk3 앱에서 PDL (PLplot 사용)으로 생성 된 그래프를 표시하려고합니다. 다음 코드를 시도하면 두 가지 문제가 발생합니다.PDL 이미지를 GdkPixbuf로 변환하는 방법

  1. $ pdlImg는 GdkPixbuf가 아니므로 new_from_pixbuf()가 작동하지 않습니다.
  2. 오류 메시지가 10x10x3 배열을 문자열로 인쇄하고 모두 0이므로 $ pdlImg은 비어있는 것처럼 보입니다.

코드 :

#!/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

첫 번째 질문에 대답하려면, 당신은 PLplot 10 개 픽셀 폭 10 개 픽셀 높이 인 헛되이 시간을 보내다으로 플롯을 넣어 가지고있다. 이 경우 일반 플롯의 한 모퉁이를 얻으려고하는지 또는 10x10 픽셀로 전체 플롯을 샘플링하는지 확신 할 수 없습니다. 그러나 어느 경우 든 $pdlImg이 완전히 0이라는 것은 놀라운 일이 아닙니다. 더 큰 크기 (아마도 1000, 1000, 3)의 piddle을 통과 시키거나 PLplot 플롯 객체를 생성 할 때 MEM => $pdlImg=null을 사용하려고 시도해보십시오.

두 번째 질문에 도움이되지 않을 수 있습니다. Gtk3에 대한 경험이 없습니다. 죄송합니다.

+0

당신은 생각할 것입니다.하지만 $ pl-> close 다음에 sum ($ pdlImg)을 출력하면 0이됩니다. – TheAmigo

+0

설명 : @Derek, 크기를 500x500x3으로 변경하고 $ pl-> close 이후에 합계 ($ pdlImg)를 인쇄하면 0입니다. – TheAmigo

+0

나는 그것을 위해 당신의 말을 가져야 할 것이다. 나는 오랫동안 PLplot을 사용하지 않았고, PDL :: Graphics :: PLplot을 사용하지 않았으며, 설치되지 않은 것처럼 보였습니다. PDL 메일 링리스트에 대해 문의 해보십시오. – Derek

관련 문제