public UUID GetMapImage(UUID regionID, string imageURL, string storagePath)
{
if (m_AssetService == null)
{
MainConsole.Instance.DebugFormat ("[GATEKEEPER SERVICE CONNECTOR]: No AssetService defined. Map tile not retrieved.");
return m_HGMapImage;
}
UUID mapTile = m_HGMapImage;
string filename = string.Empty;
Bitmap bitmap = null;
try
{
WebClient c = new WebClient ();
string name = regionID.ToString ();
filename = Path.Combine (storagePath, name + ".jpg");
MainConsole.Instance.DebugFormat ("[GATEKEEPER SERVICE CONNECTOR]: Map image at {0}, cached at {1}", imageURL, filename);
if (!File.Exists (filename))
{
MainConsole.Instance.DebugFormat ("[GATEKEEPER SERVICE CONNECTOR]: downloading...");
c.DownloadFile (imageURL, filename);
}
else
MainConsole.Instance.DebugFormat ("[GATEKEEPER SERVICE CONNECTOR]: using cached image");
bitmap = new Bitmap (filename);
//MainConsole.Instance.Debug("Size: " + m.PhysicalDimension.Height + "-" + m.PhysicalDimension.Width);
byte[] imageData = OpenJPEG.EncodeFromImage (bitmap, true);
AssetBase ass = new AssetBase (UUID.Random (), "region " + name, AssetType.Texture, regionID);
// !!! for now
//info.RegionSettings.TerrainImageID = ass.FullID;
ass.Data = imageData;
mapTile = ass.ID;
// finally
mapTile = m_AssetService.Store(ass);
}
catch // LEGIT: Catching problems caused by OpenJPEG p/invoke
{
MainConsole.Instance.Info ("[GATEKEEPER SERVICE CONNECTOR]: Failed getting/storing map image, because it is probably already in the cache");
}
return mapTile;
}