Schrift
[thread]5072[/thread]

Bildgröße ermitteln: Größe einer GIF-Datei ermitteln

Leser: 2


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
michael25
 2005-09-03 18:46
#44508 #44508
User since
2005-08-31
23 Artikel
BenutzerIn
[default_avatar]
Hallo,

wie kann ich die Größe eines Bildes (GIF) im Canvas ermitteln? Folgender Code liefert immer 0,0, obwohl das Bild einwandfrei gezeichnet wird.

Code: (dl )
1
2
3
4
my $filename = 'bild.gif';
my $image = $self->Photo(-file => $filename);
print $image->cget(-height), ",", $image->cget(-width);
$canvas->createImage($x, $y, -image => $image);


Noch besser wäre es, wenn man die Bildgröße direkt über das Canvas-Objekt herausfinden könnte, also z. B. so:

$canvas->itemcget($id, -height)

Das schlägt aber fehl, da es die Option -height nicht gibt.
Wie könnte man das anstellen?

Der Code stammt übrigens aus einem Widget, das von Tk::Canvas abgeleitet wurde.

Michael
michael25
 2005-09-03 21:15
#44509 #44509
User since
2005-08-31
23 Artikel
BenutzerIn
[default_avatar]
Hat sich erübrigt, ich bin mittlerweile auf Image::Size gestoßen. Sorry, war wohl ein klassischer Schnellschuss :-(
Crian
 2005-09-12 15:00
#44510 #44510
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Wenn Du das Bild schon in der Canvas hast und noch einen Zugriffspfad darauf (Tag oder ID), kannst Du aber natürlich auch darüber wieder auf das Bild zugreifen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
format_c
 2005-09-12 15:08
#44511 #44511
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hier ein Beispiel was mir mal irgendjemand hier mal gegeben hat. Als Argument erwartet die Funktion den Dateinamen der Gif Grafik:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
sub gifSize{
if (-e $_[0]){
if (open (HANDLE, "<$_[0]")){
my $retStr = "";
binmode HANDLE;
read(HANDLE, $retStr, 10);
close (HANDLE);

return (unpack ("v", substr($retStr,6,2)),unpack ("v", substr($retStr,8,2)));
} } }


Gruß Alex
michael25
 2005-09-12 15:46
#44512 #44512
User since
2005-08-31
23 Artikel
BenutzerIn
[default_avatar]
@format_c
Danke für den Code. Mittlerweile funktioniert das mit Image::Size ganz gut, ich werde mir den Code aber auf alle Fälle mal aufheben, man weiß ja nie, wann man ihn brauchen kann.
renee
 2005-09-12 16:04
#44513 #44513
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ist ja aber nur für GIF-Dateien... Im JPEG-Header steht die Größe bestimmt an anderer Stelle...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2005-09-12 16:47
#44514 #44514
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Ja dachte ich auch schon, vermutlich heißt die Funktion deswegen "gifSize". Fragt sich, ob das für alle Gif-Arten stimmt, da gibts nämlich mehrere.\n\n

<!--EDIT|Crian|1126529374-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
format_c
 2005-09-12 17:21
#44515 #44515
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
@renee: Für JPEG Dateien hab ich auch so ne Funktion :p
renee
 2005-09-12 17:40
#44516 #44516
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich wollte nur explizit darauf hinweisen, nicht dass der OP das bei einem JPEG-Bild probiert und sich dann wundert, dass das nicht passt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
format_c
 2005-09-12 17:50
#44517 #44517
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Was ist denn bitte "OP"?

Gruß Alex
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2005-09-03 18:46.