- test and add error reporting to to_*() family methods
+ - add to_rgb_double() method.
+ https://rt.cpan.org/Ticket/Display.html?id=65101
+
Imager 0.83 - 21 May 2011
===========
return $result;
}
+# convert a paletted (or any image) to an double/channel RGB image
+sub to_rgb_double {
+ my $self = shift;
+
+ unless (defined wantarray) {
+ my @caller = caller;
+ warn "to_rgb16() called in void context - to_rgb_double() returns the converted image at $caller[1] line $caller[2]\n";
+ return;
+ }
+
+ $self->_valid_image
+ or return;
+
+ my $result = Imager->new;
+ unless ($result->{IMG} = i_img_to_drgb($self->{IMG})) {
+ $self->_set_error(Imager->_error_as_msg());
+ return;
+ }
+
+ return $result;
+}
+
sub addcolors {
my $self = shift;
my %opts = (colors=>[], @_);
to_rgb8() - L<Imager::ImageTypes/to_rgb8()>
+to_rgb_double() - L<Imager::ImageTypes/to_rgb_double()> - convert to
+double per sample image.
+
transform() - L<Imager::Engines/"transform()">
transform2() - L<Imager::Engines/"transform2()">
int y
int ch
+Imager::ImgRaw
+i_img_to_drgb(im)
+ Imager::ImgRaw im
+
undef_int
i_tags_addn(im, name, code, idata)
Imager::ImgRaw im
extern i_img *i_img_16_new(int x, int y, int ch);
extern i_img *i_img_to_rgb16(i_img *im);
extern i_img *i_img_double_new(int x, int y, int ch);
+extern i_img *i_img_to_drgb(i_img *im);
extern int i_img_is_monochrome(i_img *im, int *zero_is_white);
extern void i_get_file_background(i_img *im, i_color *bg);
}
}
+/*
+=item i_img_to_drgb(im)
+
+=category Image creation
+
+Returns a double/sample version of the supplied image.
+
+Returns the image on success, or NULL on failure.
+
+=cut
+*/
+
+i_img *
+i_img_to_drgb(i_img *im) {
+ i_img *targ;
+ i_fcolor *line;
+ int y;
+
+ targ = i_img_double_new(im->xsize, im->ysize, im->channels);
+ if (!targ)
+ return NULL;
+ line = mymalloc(sizeof(i_fcolor) * im->xsize);
+ for (y = 0; y < im->ysize; ++y) {
+ i_glinf(im, 0, im->xsize, y, line);
+ i_plinf(targ, 0, im->xsize, y, line);
+ }
+
+ myfree(line);
+
+ return targ;
+}
/*
=back
=item to_rgb16()
-You can convert a paletted image (or any image) to an 16-bit/channel
-RGB image with:
+Convert a paletted image (or any image) to a 16-bit/channel RGB image.
$rgbimg = $img->to_rgb16;
No parameters.
+=item to_rgb_double()
+
+Convert a paletted image (or any image) to an double/channel direct
+color image.
+
+ $rgbimg = $img->to_rgb_double;
+
+No parameters.
+
=item masked()
Creates a masked image. A masked image lets you create an image proxy
#!perl -w
use strict;
-use Test::More tests => 83;
-
+use Test::More tests => 88;
BEGIN { use_ok(Imager => qw(:all :handy)) }
+use Imager::Test qw(test_image is_image);
+
-d "testout" or mkdir "testout";
init_log("testout/t022double.log", 1);
my $im = Imager->new(xsize => 10, ysize=>10, bits=>'double');
image_bounds_checks($im);
}
+
+
+{ # convert to rgb double
+ my $im = test_image();
+ my $imdb = $im->to_rgb_double;
+ print "# check conversion to double\n";
+ is($imdb->bits, "double", "check bits");
+ is_image($im, $imdb, "check image data matches");
+}
+
+{ # empty image handling
+ my $im = Imager->new;
+ ok($im, "make empty image");
+ ok(!$im->to_rgb_double, "convert empty image to double");
+ is($im->errstr, "empty input image", "check message");
+}