All pastes #369435 Raw Edit

Mine

public text v1 · immutable
#369435 ·published 2007-02-23 21:01 UTC
rendered paste body
#!/usr/bin/perl

# Basic PNG tEXt chunk parser
# Spec: http://www.w3.org/TR/PNG/
# Copyright (c) 2006 Omnix <omnix@punksbusted.com>
# This is licensed under the MIT Licence - see http://www.opensource.org/licenses/mit-license.html

open(IMAGE, '< ' . $ARGV[0]);
my $offset = 0;

my $buffer;
read(IMAGE, $buffer, 8, 0) or die('Prematurely reached EOF');
if ($buffer != "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A") {
        die("Invalid PNG image.");
}

while (1) {
        read(IMAGE, $buffer, 4, 0) or die('Prematurely reached EOF');
        $chunk_len = unpack('N', $buffer);

        read(IMAGE, $chunk_type, 4, 0) or die('Prematurely reached EOF');
        read(IMAGE, $chunk_data, $chunk_len, 0) or die('Prematurely reached EOF');
        if ($chunk_type eq 'tEXt') {
                my ($text_keyword, $text_string) = split(/\x00/, $chunk_data);
                print "$text_keyword : $text_string\n";
                exit;
        }
        read(IMAGE, $buffer, 4, 0) or die('Prematurely reached EOF');  # CRC
}