Re: data structure of pixel in Gimp-perl

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Oct 27, 1999 at 10:23:17AM -0700, xdsun@xxxxxxxxxxxx wrote:
> Hi, there,
>   I am using Gimp-Perl v1.083 to manipulate the pixel data of an image.

While that version should work, I fixed a great many errors in PDL support
since then, and there were also behavioural changes (like an extra dummy
dimension for greyscale data) that make working with pixels easier, but
breaks backwards compatibility.

It would be a good idea to upgrade to 1.14.

> What I am confusing about is the data structure of the packed pixel
> data. For example, I can run the following perl code:
>     
> 
>     $region = $drawable->get->pixel_rgn (0,0, 100,100, 1,0);
>     $pixel = $region->get_pixel (5,7);     # fetches the pixel from
> (5|7)
>     print $pixel;                          # outputs something like
>                                            # [255, 127, 0], i.e. in
>                                            # RGB format ;)
> 
> But how can I modify the components of this $pixel? For example, modify
> it to [255,127,1]?

The pixels look like arrays, but are, in fact, PDL objects (i.e. some kind
of array ;)

>   I have tried to treat it as an array or an array reference, but I
> failed. Any help is greatly appreciated.

You can treat it as a vector (or an array of vectors for two-dimensional
data), e.g.:

$pixel = ($pixel + 100) / 2;
$pixel = 255 * $pixel / max($pixel);

will do the obvious scalar arithmetic to the pixel (or pixels). You can
use "at" and "set" to get or set subvalues, but this is (of course) slow
if you do it often.

I recommend that you check the PDL::Impatient manpage for a quick overview
(just enter "perldoc PDL::Impatient" at the prompt).

If any questions remain then just ask me ;)

-- 
      -----==-                                             |
      ----==-- _                                           |
      ---==---(_)__  __ ____  __       Marc Lehmann      +--
      --==---/ / _ \/ // /\ \/ /       pcg@xxxxxxxxxxxxx |e|
      -=====/_/_//_/\_,_/ /_/\_\       XX11-RIPE         --+
    The choice of a GNU generation                       |
                                                         |


[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux