HI ! I want to add an APP segment in a jpg image with the Image::MetaData::JPEG module.

The following code add an APP2 segment inside the jpg, but it seems to be empty as it only add \0xffe200002 in the file, which means: an APP2 segment (\0xffe2) of length 2 (\0x0002) (the marker plus the length's length = 2, basically an empty segment).

perl run.pl test.jpg
use strict; use warnings; use Image::MetaData::JPEG; use Image::MetaData::JPEG::Record; use Image::MetaData::JPEG::data::Tables qw(:JPEGgrammar :Endianness :RecordTypes); use Data::Dumper; #read the image filname from the command line arguments my $file = new Image::MetaData::JPEG($ARGV[0]); #add MP header information in the APP2 segment in the image my $buffer; my $segref = new Image::MetaData::JPEG::Segment('APP2', $buffer, 'NOPA +RSE'); my $head = "MPF0"; my $recref = $segref->store_record('MP_HEADER', $LONG, \$head, 1); print Dumper $segref; $file->insert_segments($segref); #save $file->save('tmp1.jpg');

Output

$VAR1 = bless( { 'dataref' => \'', 'endianness' => undef, 'error' => undef, 'records' => [ bless( { 'values' => [ 1297106480 ], 'extra' => undef, 'key' => 'MP_HEADER', 'type' => 4 }, 'Image::MetaData::JPEG::Reco +rd' ) ], 'name' => 'APP2' }, 'Image::MetaData::JPEG::Segment' );

How can I add a segement in a JPG with this module, how to use the insert_segments function properly ? especially the $buffer variable. thanks !

In reply to Add a segment in a JPG image with Image::MetaData::JPEG by neoldschool

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.