[Mapserver-users] Sending image to stdout under Apache

Eric Bridger eric at gomoos.org
Wed Mar 5 05:57:23 EST 2003


Thanks Lowell,

Yes, that was the work-around I mentioned.  But avoiding the write to
disk is what I am after.  I have found that using /cgi-bin/mapserv as an
image engine results in significant performance improvements for our
mapscript application.  But constructing the proper query strings to
manipulate the map is cumbersome and seems to have certain limitations. 
I'd prefer to manipulate the map using mapscript and then print it to
the stdout. But somehow, using $img->saveImage(undef, ...) which spends
some time doing something, never sends the image to the stdout when run
as a CGI.  From the command line, it works.

We don't have this problem with a graphing application in the same
environment which uses GD.pm.


On Wed, 2003-03-05 at 15:27, Lowell Filak wrote:
> Hmmm...
> I thought I replied back concerning that.?
> Just do a:
> print "Content-type: image/png\n\n";
> system("cat junk.png");
> and that will send the image to stdout/the browser.
> HTH
> Lowell F.
> 
> The following message was sent by Eric Bridger <eric at gomoos.org> on 05 Mar 2003 08:59:12 +0000.
> 
> > 
> > 
> > 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 
> > 
> > 
> > _______________________________________________
> > Mapserver-users mailing list
> > Mapserver-users at lists.gis.umn.edu
> > http://lists.gis.umn.edu/mailman/listinfo/mapserver-users
> 
> _______________________________________________
> Mapserver-users mailing list
> Mapserver-users at lists.gis.umn.edu
> http://lists.gis.umn.edu/mailman/listinfo/mapserver-users
> 





More information about the mapserver-users mailing list