protected override byte[] ProcessRequest(string path, Stream requestData, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) { if (m_scenes.Count == 0) { m_log.Error("[JPEGImageService] ERROR: This service are only aviable at a running region!"); return(null); } if (m_scenes[0].AssetService != null) { Dictionary <string, object> request = new Dictionary <string, object>(); foreach (string name in httpRequest.QueryString) { request[name] = httpRequest.QueryString[name]; } string assetUUID = Convert.ToString(request["assetID"]); if (assetUUID != null) { if (m_scenes[0].AssetService.AssetsExist(new String[] { assetUUID })[0]) { AssetBase asset = m_scenes[0].AssetService.Get(assetUUID); if (asset != null) { if (asset.Type == (sbyte)AssetType.Texture) { OpenMetaverse.Imaging.ManagedImage jpegImageData = new OpenMetaverse.Imaging.ManagedImage(256, 256, OpenMetaverse.Imaging.ManagedImage.ImageChannels.Color); if (OpenMetaverse.Imaging.OpenJPEG.DecodeToImage(asset.Data, out jpegImageData)) { Stream imageStream = new MemoryStream(ImageToByte(jpegImageData.ExportBitmap())); Stream saveStream = new MemoryStream(); System.Drawing.Image image = System.Drawing.Image.FromStream(imageStream); image.Save(saveStream, System.Drawing.Imaging.ImageFormat.Jpeg); httpResponse.ContentType = "image/jpeg"; return(ReadToEnd(saveStream)); } else { m_log.Info("[JPEGImageService] ERROR: Cant decode asset data!"); return(null); } } else { m_log.Error("[JPEGImageService] ERROR: Asset is not an image!"); return(null); } } else { m_log.Error("[JPEGImageService] ERROR: Unknown error while fetch Asset '" + assetUUID + "'!"); return(null); } } else { m_log.Error("[JPEGImageService] ERROR: Asset with UUID '" + assetUUID + "' dont exist!"); return(null); } } else { m_log.Error("[JPEGImageService] ERROR: Request dont have an valid assetID."); return(null); } } else { m_log.Error("[JPEGImageService] ERROR: AssetService is not aviable!"); return(null); } }
protected override byte[] ProcessRequest(string path, Stream requestData, IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) { Dictionary<string, object> request = new Dictionary<string, object>(); foreach (string name in httpRequest.QueryString) request[name] = httpRequest.QueryString[name]; if (m_JPEGConverter.AssetService != null) { string assetUUID = Convert.ToString(request["assetID"]); if(m_JPEGConverter.AssetService.AssetsExist(new String[] {assetUUID})[0]) { AssetBase asset = m_JPEGConverter.AssetService.Get(assetUUID); if (asset != null) { if (asset.Type == (sbyte)AssetType.Texture) { OpenMetaverse.Imaging.ManagedImage jpegImageData = new OpenMetaverse.Imaging.ManagedImage(256, 256, OpenMetaverse.Imaging.ManagedImage.ImageChannels.Color); if (OpenMetaverse.Imaging.OpenJPEG.DecodeToImage(asset.Data, out jpegImageData)) { Stream imageStream = new MemoryStream(ImageToByte(jpegImageData.ExportBitmap())); Stream saveStream = new MemoryStream(); System.Drawing.Image image = System.Drawing.Image.FromStream(imageStream); image.Save(saveStream, System.Drawing.Imaging.ImageFormat.Jpeg); httpResponse.ContentType = "image/jpeg"; return ReadToEnd(saveStream); } } } } } return null; }