open(PNG, '>', \my $img_data); ...; print PNG ... process_image($img_data); __C__ SV* process_image(SV *image_data) { { STRLEN dlen; SV *data = SvPV(image_data, dlen); gdImagePtr im = gdImageCreateFromPngPtr(dlen, data); ... }