Ejemplo n.º 1
0
        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;
        }