2010/5/26 Even Rouault <even.roua...@mines-paris.org> > Felix, > > yes you should be able to use FileFromMemBuffer() to create a virtual file > and > open it with the PNG driver (since the PNG driver supports virtual IO --> > as > confirmed by gdalinfo --format PNG) > > Here's the C API for it : > http://gdal.org/cpl__vsi_8h.html#1ecb3a78729ecea4d2ce22065a605244 > > And here's an extract of a test in the Python autotest suite. > > content = open('data/byte.tif', mode='rb').read() > > # Create in-memory file and initialize it with the content > gdal.FileFromMemBuffer('/vsimem/tiffinmem', content) > > # Open the in-memory file > ds = gdal.Open('/vsimem/tiffinmem') > > # do something with the dataset > > # Close the dataset > ds = None > > # Release memory associated to the in-memory file > gdal.Unlink('/vsimem/tiffinmem') > > > Disclaimer: You should be able to adapt the above for C#, but I haven't > tested > with the C# bindings, so there's a risk that they aren't ready if there's > some missing required typemap. > > Felix,
The current version of the C# signature of FileFromMemBuffer is rude and not user friendly, though I could imagine the following transcript of the python code above for the C# bindings (not tested): byte[] bytes = File.ReadAllBytes("data\\byte.tif"); GCHandle handle = GCHandle.Alloc(bytes, GCHandleType.Pinned); try { Gdal.FileFromMemBuffer("/vsimem/tiffinmem", handle.AddrOfPinnedObject()); using (Dataset ds = gdal.Open("/vsimem/tiffinmem")) { // do something } Gdal.Unlink("/vsimem/tiffinmem"); } finally { handle.Free(); } In the future I'm about to add a second signature to the bindings "*public static void FileFromMemBuffer(string pszFilename, int nBytes, byte[] pabyData)*" which could also avoid the extra memcopy implemented in the current version. Feel free to add a ticket <http://trac.osgeo.org/gdal/newticket> to require this addition. Best regards, Tamas
_______________________________________________ gdal-dev mailing list gdal-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/gdal-dev