Leser: 24
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
#!/usr/bion/perl; use strict; use warnings; {package tortengrafik; use Graphics::Magick; use Math::Trig; sub new { my $class=shift; $class=ref($class) if(ref($class)); my $self={values=>[]}; bless($self,$class); } # füge ein Element hinzu # params: # - Wert Zahlenwert des feldes (muss ein zahl >0 sein) # - Farbe Farbe des Feldes (weiß ist default) # - Text Title/Text des Feldes sub add { my $self=shift; my $value=shift || 0; $value+=0; return 0 unless($value); my $color=shift || '#FFFFFF'; my $title=shift || ''; push(@{$self->{values}},{val=>$value,title=>$title,color=>$color}); $self->{sum}=undef; return 1; } # erzeuge die Grafik # params: # - größe des Diagrammes (radius des Diagramms) # - Abstand zum Rand (wird aufaddiert) # - Textgröße (12 pixes ist default) # - Hintergrundfarbe (Weiß ist default) # - Linenfarbe (Schwarz ist default) sub create { my $self=shift; my $size=shift || 100; my $border=shift || 4; my $text_size=shift || 12; my $bg_color=shift || 'white'; my $line_color=shift || 'black'; # Create Image my $img=Graphics::Magick->new(); $img->Set(size=>($size*2+$border*2)."x".($size*2+$border*2)); $img->Read('xc:'.$bg_color); # get summ unless($self->{sum}) { $self->{sum}=0; for my $val (@{$self->{values}}) { $self->{sum}+=$val->{val}; } } # Draw Felder my $ancle=0; my $center=$size+$border; for my $val (@{$self->{values}}) { my $a=(360/$self->{sum})*$val->{val}; my $new_ancle=$ancle+$a; $img->Draw(primitive=>'ellipse', points=>$center.','.$center.' '.($size/2).','.($size/2).' '.$ancle.','.$new_ancle, fill=>$val->{color}, stroke=>$val->{color}, strokewidth=>$size); $ancle=$new_ancle; } # Draw seperators $ancle=0; for my $val (@{$self->{values}}) { my $a=((pi*2)/$self->{sum})*$val->{val}; my $new_ancle=$ancle+$a; my $px=(cos($new_ancle)*$size)+$center; my $py=(sin($new_ancle)*$size)+$center; $img->Draw(primitive=>'line', points=>"$center,$center $px,$py", stroke=>$line_color, strokewidth=>2); $ancle=$new_ancle; } $img->Draw(primitive=>'ellipse', points=>$center.','.$center.' '.$size.','.$size.' 0,360', stroke=>$line_color, strokewidth=>2); # Draw text; $ancle=0; for my $val (@{$self->{values}}) { my $a=((pi*2)/$self->{sum})*$val->{val}; my $new_ancle=$ancle+$a; my $px=(cos($ancle+$a/2)*$size/2)+$center; my $py=(sin($ancle+$a/2)*$size/2)+$center; my $text=int((100/$self->{sum})*$val->{val}).'%% '.$val->{title}; $img->Draw(primitive=>'text', points=>"$px,$py '$text'", fill=>$line_color, pointsize=>$text_size, strokewidth=>1); $ancle=$new_ancle; } return $img; } 1;} package main; my $g=tortengrafik->new(); $g->add(10,'#FF0000','Test1'); $g->add(20,'#00FF00','Test2'); $g->add(40,'#0000FF','Test3'); $g->add(30,'#FFF000','Test4'); $g->add(20,'#00FFF0','Test5'); $g->add(10,'#000FFF','Test6'); $g->add(40,'#FF00F0','Test7'); $g->add(30,'#F0FF00','Test8'); $g->add(10,'#00F0FF','Test9'); $g->create(300,5,30,'#FFFFFF')->display();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
ppm> s magick
Searching in Active Repositories
1. Apache-ImageMagick [2.0b7] Apache-ImageMagick
2. Apache-ImageMagick [2.0b7] Convert and manipulate images on the fly
3. Catalyst-Plugin-Upload-Image-Magick [0.03] Utility using ImageMagick for Catalyst::Request::Upload
4. CGI-FormMagick [0.89] easily create CGI form-based applications
5. Image-Magick [6.5.3] ImageMagick PERL Extension
6. Image-Magick [6.5.7] ImageMagick PERL Extension (QD=16)
7. Image-Magick-Brand [0.01] Perl extension for creating branded images with ImageMagick.
8. Image-Magick-Brand [0.01] Perl extension for creating branded images with ImageMagick.
9. Image-Magick-Chart [1.03] Use Image::Magick to create charts
10. Image-Magick-Chart [1.03] Use Image::Magick to create charts
11. Image-Magick-Info [0.03] Retreive image attributes with Image::Magick.
12. Image-Magick-Info [0.03] Retreive image attributes with Image::Magick.
13. Image-Magick-Iterator [0.01] sequentially read Image::Magick object from
14. Image-Magick-Iterator [0.01] sequentially read Image::Magick object from
15. Image-Magick-NFPADiamond [1.00] This module renders a NFPA diamond using ImageMagick
16. Image-Magick-PixelMosaic [0.03] Pixelized mosaic filter for Image::Magick.
17. Image-Magick-PolyText [1.0] Draw text along a polyline
18. Image-Magick-Square [1.003] Takes image and crops trims to a square shape
19. Image-Magick-Square [1.003] Takes image and crops to a square
20. Image-Magick-Square [1.002] Image-Magick-Square
21. Image-Magick-Square [1.002] Takes image and crops to a square
22. Image-Magick-Stencilize [1.02]
23. Image-Magick-Thumbnail [0.05] Produces thumbnail images with ImageMagick
24. Image-Magick-Thumbnail [0.06] Produces thumbnail images with ImageMagick
25. Image-Magick-Thumbnail-Fixed [0.04] Perl extension for creating fixed sized thumbnails without distortion.
26. Image-Magick-Thumbnail-Fixed [0.04] Perl extension for creating fixed sized thumbnails without distortion.
27. Image-Magick-Thumbnail-Fixed [0.04] Image-Magick-Thumbnail-Fixed
28. Image-Magick-Thumbnail-Fixed [0.04] Perl extension for creating fixed sized thumbnails without distortion.
29. Image-Magick-Thumbnail-NotFound [1.008] Create thumbnails as http requests for them fail
30. Image-Magick-Thumbnail-PDF [1.05] make thumbnail of a page in a pdf document
31. Image-Magick-Thumbnail-PDF [1.11] make thumbnail of a page in a pdf document
32. Image-Magick-Thumbnail-Simple [0.12] The thumbnail image is easily made without uselessness.
33. Image-Magick-Tiler [1.00] Slice an image into N x M tiles.
34. Image-Magick-Tiler [1.00] Slice an image into N x M tiles
35. Image-Magick_ [6.5.7] ImageMagick PERL Extension (QD=8)
36. PerlMagick [6.5.3] ImageMagick PERL Extension
37. PerlMagick [6.5.7] ImageMagick PERL Extension (QD=16)
38. Wx-Perl-Imagick [0.02] A drop-in replacement for Wx::Image with all functionality of Image::Mag~
2010-02-07T14:58:03 GwenDragonSchau dir doch mal PerlMagick an, da gibt es auch ein paar Beispiele wie sowas geht.
2010-02-07T15:18:12 GwenDragonWeil du ja ein bestimmtes ActiveStates Perl verwenden willst/musst und es in den Repos da nur aktuelle oder welche, die nicht laufen, gibt.
2010-02-07T15:27:45 GwenDragon5.8.9 würde ich schon nehmen, wenn dein Hoster 5.8.x hat!
2010-02-07T17:15:27 GwenDragonGratuliere.
Viel Erfolg weiter.
1
2
GetList: UnrecognizedType 11
Use of uninitialized value in concatenation (.) or string at test.pl line 129.
2010-02-07T15:28:38 reneeWie sieht Dein Code davor aus?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
#!/usr/bin/perl -w use strict; use warnings; { package tortengrafik; use Image::Magick; use Math::Trig; sub new { my $class=shift; $class=ref($class) if(ref($class)); my $self={values=>[]}; bless($self,$class); } # füge ein Element hinzu # params: # - Wert Zahlenwert des feldes (muss ein zahl >0 sein) # - Farbe Farbe des Feldes (weiß ist default) # - Text Title/Text des Feldes sub add { my $self=shift; my $value=shift || 0; $value+=0; return 0 unless($value); my $color=shift || '#FFFFFF'; my $title=shift || ''; push(@{$self->{values}},{val=>$value,title=>$title,color=>$color}); $self->{sum}=undef; return 1; } # erzeuge die Grafik # params: # - größe des Diagrammes (radius des Diagramms) # - Abstand zum Rand (wird aufaddiert) # - Textgröße (12 pixes ist default) # - Hintergrundfarbe (Weiß ist default) # - Linenfarbe (Schwarz ist default) sub create { my $self=shift; my $size=shift || 150; my $border=shift || 4; my $text_size=shift || 12; my $bg_color=shift || 'white'; my $line_color=shift || 'black'; # Create Image my $img=Image::Magick->new(); $img->Set(size=>($size*2+$border*2)."x".($size*2+$border*2)); $img->Read('xc:'.$bg_color); # get summ unless($self->{sum}) { $self->{sum}=0; for my $val (@{$self->{values}}) { $self->{sum}+=$val->{val}; } } # Draw Felder my $ancle=0; my $center=$size+$border; for my $val (@{$self->{values}}) { my $a=(360/$self->{sum})*$val->{val}; my $new_ancle=$ancle+$a; $img->Draw(primitive=>'ellipse', points=>$center.','.$center.' '.($size/2).','.($size/2).' '.$ancle.','.$new_ancle, fill=>$val->{color}, stroke=>$val->{color}, strokewidth=>$size); $ancle=$new_ancle; } # Draw seperators $ancle=0; for my $val (@{$self->{values}}) { my $a=((pi*2)/$self->{sum})*$val->{val}; my $new_ancle=$ancle+$a; my $px=(cos($new_ancle)*$size)+$center; my $py=(sin($new_ancle)*$size)+$center; $img->Draw(primitive=>'line', points=>"$center,$center $px,$py", stroke=>$line_color, strokewidth=>2); $ancle=$new_ancle; } $img->Draw(primitive=>'ellipse', points=>$center.','.$center.' '.$size.','.$size.' 0,360', stroke=>$line_color, strokewidth=>2); # Draw text; $ancle=0; for my $val (@{$self->{values}}) { my $a=((pi*2)/$self->{sum})*$val->{val}; my $new_ancle=$ancle+$a; my $px=(cos($ancle+$a/2)*$size/2)+$center; my $py=(sin($ancle+$a/2)*$size/2)+$center; my $text=int((100/$self->{sum})*$val->{val}).'%% '.$val->{title}; $img->Draw(primitive=>'text', points=>"$px,$py '$text'", fill=>$line_color, pointsize=>$text_size, strokewidth=>1); $ancle=$new_ancle; } return $img; } 1; } my $g=tortengrafik->new(); $g->add(10,'#FF0000','Test1'); $g->add(20,'#00FF00','Test2'); $g->add(40,'#0000FF','Test3'); $g->add(30,'#FFF000','Test4'); $g->add(20,'#00FFF0','Test5'); $g->add(10,'#000FFF','Test6'); $g->add(40,'#FF00F0','Test7'); $g->add(30,'#F0FF00','Test8'); $g->add(10,'#00F0FF','Test9'); $g->create(150,5,30,'#FFFFFF'); (my $bild)=$g->Image::Magick::ImageToBlob(magick=>'png'); print "$bild\n";
1 2 3 4
# ... my $image=$g->create(150,5,30,'#FFFFFF'); my ($bild)=$image->ImageToBlob(magick=>'png'); print "$bild\n"; # <= Da wird dir in Haufen Sonderzeichen auf der shell ausgespuckt!
2010-02-07T15:30:15 GwenDragonbinmode STDOUT; nicht vergessen!
Sonst gibt es Ärger unter Windows.
2010-02-07T15:33:51 GwenDragonAber das "\n" in die Bilddaten zu schreiben ist falsch!
2010-02-07T15:30:15 GwenDragon[...]
Und ein "\n" gehört nicht da hin! Das kommt doch sonst auch als binäre Daten in dein Bild!