[SOLVED] Creating a new() image from scratch, WITH attributes
Posted: 2019-09-21T09:00:59-07:00
According to my understanding of the documentation (references in the codeblock), it should be possible to create an image from scratch, using all of the attributes named under SetAttribute and to read them back, along with all other attributes under GetAttribute.
However, in the following, only 'size' returns what was set in new(): depth returns incorrectly as 16, not 8, and the rest of the attributes return EMPTY.
For a time I wondered if, because $image can contain multiple images, I should be "dereferencing" it in order to Get() attributes (for example, like $image->[0]->Get()), but I found examples where an $image with a single member did not resort to the index.
I only recently installed v7.0.8 from source and although it passed 'make check', I suppose it could be broken.
Can you suggest anything?
Thank you.
[EDIT: here's what's returned]
Size:100x1 Depth:16 Magick: W: H: Matte: Alpha: Fill:
However, in the following, only 'size' returns what was set in new(): depth returns incorrectly as 16, not 8, and the rest of the attributes return EMPTY.
For a time I wondered if, because $image can contain multiple images, I should be "dereferencing" it in order to Get() attributes (for example, like $image->[0]->Get()), but I found examples where an $image with a single member did not resort to the index.
I only recently installed v7.0.8 from source and although it passed 'make check', I suppose it could be broken.
Can you suggest anything?
Thank you.
[EDIT: here's what's returned]
Size:100x1 Depth:16 Magick: W: H: Matte: Alpha: Fill:
Code: Select all
#!/usr/bin/perl
use strict;
use Image::Magick;
my @pixel=(0.5,0.5,0.5,1);
# from: https://imagemagick.org/script/perl-magick.php#overview
# "The new() method takes the same parameters as SetAttribute."
my $image = Image::Magick->new(
size=>'100x1',
depth=>8,
magick=>'PNG',
alpha=>'Transparent',
matte=>'True',
fill=>\@pixel
);
#$image->Set(depth=>8);
$image->Set('depth'=>8); # quoted or not, the result is '16' (??)
# from: https://imagemagick.org/script/perl-magick.php#set-attribute
# "...here is a list of all the image attributes you can set:"
# from: https://imagemagick.org/script/perl-magick.php#get-attribute
# "In addition to all the attributes listed in Set an Image Attribute,
# you can get ... additional attributes:"
# NOTE: Get() arguments are quoted because Perl complains about them being "barewords" under 'use strict'
my $z=$image->Get('size'); # NOTE: even though 'size' is quoted here, it was unquoted in new() but it's still found correctly
my $d=$image->Get('depth'); NOTE: depth was defined as 8 in new() and Set() to 8 as well, but Get()s as 16 (??)
my $g=$image->Get('magick'); # EMPTY
my $c=$image->Get('columns'); # EMPTY
my $r=$image->Get('rows'); # EMPTY
my $t=$image->Get('matte'); # EMPTY
my $a=$image->Get('alpha'); # EMPTY
my @f=$image->Get('fill'); # EMPTY
print "Size:$z Depth:$d Magick:$g W:$c H:$r Matte:$t Alpha:$a Fill:@f\n";