Re: [GD-DEVEL] Problem using gdImageGetPixel()

[email protected] (Takeshi Abe) Thu, 18 Dec 2008 22:08:34 +0900 (JST)
Newsgroups php.gd.devel
Message-ID <[email protected]>
Hi Yorn,

On Thu, 18 Dec 2008 13:31:31 +0100, Yorn <[email protected]> wrote:
> Hey,
> 
> However, the example code leads to a segfault...  
My guess is that your pic1.jpg is true color (then im->red etc. were not
initialized so segfault).

> What I really want is the following:
> 1) Read a picture (This is where I would like to use libgd for)
> 2) Maybe resize/resample it
> 3) get a plain rgba picture (successive placed into memory), so that I can do 
> some internal manipulation
> 4) calculate an YCbCr 420 Plain (where I would be happy to have the exactly 
> plain discribed in 3)
> 
> Any idea, how I can get this rgb(a) plain?
How about using gdImageRed/gdImageGreen/gdImageBlue/gdImageAlpha, like the followings?

#include <stdio.h>
#include <gd.h>

int main()
{
    FILE *in;
    gdImagePtr im;
    int c;
    in = fopen("pic1.jpg", "rb");
    im = gdImageCreateFromJpeg(in);
    fclose(in);
    c = gdImageGetPixel(im, gdImageSX(im) / 2, gdImageSY(im) / 2);
    printf("The value of the center pixel is %d", c);
    int red = gdImageRed(im, c);
    int green = gdImageGreen(im, c);
    int blue = gdImageRed(im, c);

    printf(" RGB values are %d %d %d\n", red, green, blue);
    gdImageDestroy(im);
    return(0);
}

Cheers,
-- Takeshi Abe