I can't find a (reasonably) fast method to create an image from scratch by supplying it an array of raw RGB values (or permutations of A,R,G,B). (note: the array of raw RGB can be modified to suit the scheme supported by the method). The best I could achieve was with Imager but setpixel takes ages obviously:
my $W = 100;
my $H = 100;
# $result is a 1D array of rgb values for $Wx$H
# rgb values may actually be ARGB or RGBA etc. but I can transform
# this to suit a module
my $imager = Imager-> new(
xsize => $W,
ysize => $H,
channels => 3,
) or die "called to Imager-> new() has failed.";
for my $x (0..$W){
for my $y (0..$H){
my $rgb = $result->[$x + $y * $W];
next unless defined $rgb;
# ARGB here, or any other scheme
my $R = ($rgb & 0x00FF0000) >> 16;
my $G = ($rgb & 0x0000FF00) >> 8;
my $B = ($rgb & 0x000000FF);
$imager->setpixel(x=>$x, y=>$y, color => [$R, $G, $B]);
}
}
$imager-> write(file => 'out.png', type=>'png')
Edit: Ideally, I would like a method which just takes in an array of RGB values and creates the image (fastly).
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|