Hallo,
die Frage bezieht sich zwar mehr auf ImageMagick als auf Perl - aber vielleicht kann mir jemand weiterhelfen.
Wir haben bei uns im Image-Verzeichnis des Webs eine JPG-Datei entdeckt, die laut IrfanView als Bild nur 30.040 Bytes groß ist und auf der Platte 186.313 Bytes einnimmt. Vermutlich hängt dort noch was dran, was nicht reingehört und im Viewer nicht angezeigt wird. Normalerweise sollte ja die Speichergröße bei JPG auf der Platte kleiner als im Hauptspeicher sein wg. der Kompression. Diverse Virenscanner schlagen bei dieser Datei aber keinen Alarm. Behandle ich die Datei per ImageMagick mit "Strip", reduziert sich die Größe auf der Platte auf 12.005 Bytes.
Jetzt wollte ich ein Analyse-Skript erstellen, was mir alle JPGs auflistet, deren Größe im Hauptspeicher kleiner ist als auf der Platte. Versucht habe ich es so:
my $P = new Image::Magick;
$P->Read($ARGV[0]);
my ($fsize, $msize) = $P->Get('filesize', 'memory');
print "Filesize: $fsize, Memorysize: $msize\n";
Leider liefert das 'memory' Attribut immer "undef". Über Vorschläge, wie ich die Größe eines JPG-Bildes im Hauptspeicher via ImageMagick bestimmen kann wäre ich froh.
Gruß
Thomas