[Mapserver-users] Sending image to stdout under Apache

Eric Bridger eric at gomoos.org
Wed Mar 5 03:59:12 EST 2003


The list archives show that this came up last Dec.
(http://mapserver.gis.umn.edu/data2/wilma/mapserver-users/0212/msg00265.html) and while a work around was suggested there was no solution to the problem given, so I was wondering if anyone else had run into this problem. 

I'm having a problem using Perl mapscript $img->saveImage(undef, ...),
to send an image, PNG and/or JPEG, to the standard output under Apache. 
Running in /cgi-bin I have the following script: 

my $map = new mapscript::mapObj($ms_dir . "/test.map"); 

my $ref_img = $map->drawReferenceMap(); 

# This works fine: 
#$ref_img->saveImage("junk.png", $mapscript::MS_PNG,  
$map->{transparent}, $map->{interlace}, 0); 

print "HTTP/1.0 200 OK\n"; 
print "Content-type: image/png\r\n\r\n"; 
binmode STDOUT; 

# this produces no output on Apache's STDOUT 
$ref_img->saveImage("", $mapscript::MS_PNG, $map->{transparent},
$map->{interlace}, 0); 

$ref_img->free(); 
exit; 


>From the command line this script works as expected.  But when run under
Apache/mod_perl  it's as if the C msSaveImage() stdout stream is
pointing somewhere other than the Apache stdout (i.e. the client
browser). 

The work around of course is to save a disk file and then print it, but
the whole point of this is to avoid the temp. disk files.  I've noticed
a significant increase in performance when using mapserv as an image
engine rather then using temp disk files. 

Thanks. 
Eric 


Setup: 

Apache/1.3.26 (Unix) 
Mapserv 3.6.4 
mod_perl 1.22 





More information about the mapserver-users mailing list