示例#1
0
        public Emoticon(EmoticonSet set, string regex, JsonImage data)
        {
            Regex    = regex;
            Width    = data.width ?? -1;
            Height   = data.height ?? -1;
            Url      = data.url;
            ImageSet = set;

            if (Regex.IsRegex())
            {
                Regex = Regex.Replace(@"&gt\;", ">").Replace(@"&lt\;", "<");
                try
                {
                    m_reg = new Regex(Regex);
                }
                catch
                {
                }
            }

            string localPath = GetLocalPath(set.Cache);

            if (File.Exists(localPath))
            {
                LocalFile = localPath;
            }
        }
示例#2
0
        public async Task <QuadroPersonalizado> NovoQuadroPersonalizado(QuadroPersonalizado model, StorageConfig config, IFormFile file)
        {
            using (RepositorySession dalSession = new RepositorySession(Runtime.JWInstance))
            {
                IUnitOfWork unitOfWork = dalSession.UnitOfWork;
                JsonImage   url        = new JsonImage();
                unitOfWork.Begin();
                try
                {
                    if (model.Valid)
                    {
                        if (file != null && _storageAzure.IsImage(file.FileName.Trim('\"')))
                        {
                            if (file.Length > 0)
                            {
                                using (var stream = file.OpenReadStream())
                                    url = await _storageAzure.Upload(stream, Guid.NewGuid() + "_" + file.FileName, config);
                            }
                            else
                            {
                                model.AddNotification(nameof(JsonImage.Url), "Arquivo Vazio");
                            }
                        }
                        else
                        {
                            model.AddNotification(nameof(JsonImage.Url), "Arquivo não suportado");
                        }

                        model.Url = url.Url;
                        if (model.Valid)
                        {
                            _repositoryQuadro.InserirQuadroPersonalizado(ref unitOfWork, model);
                            unitOfWork.Commit();
                        }
                        else if (model.Url != null)
                        {
                            await _storageAzure.DeleteBlobData(model.Url, config);
                        }
                    }
                }
                catch
                {
                    unitOfWork.Rollback();
                    await _storageAzure.DeleteBlobData(model.Url, config);

                    throw;
                }
                return(model);
            }
        }
        private IEnumerator Listen(JsonImage image)
        {
            if (image.loading)
            {
                yield return(new WaitForSeconds(0.25f));

                yield return(Listen(image));
            }
            else
            {
                WWW www = new WWW("file:///" + Config.Directories.Image.Replace("{0}", image.pk.ToString()).Replace("{1}", image.suffix));
                yield return(www);

                image.texture = www.texture;
            }
        }
        /// <summary>
        /// The response is a FeatureCollection object with a list of image features ordered by captured_at by default. If closeto is provided, image features will be ordered by their distances to the closeto location.
        /// </summary>
        /// <param name="bbox">Filter by the bounding box, given as minx,miny,maxx,maxy.</param>
        /// <param name="closeTo">Filter by a location that images are close to, given as longitude,latitude.</param>
        /// <param name="endTime">Filter images that are captured before end_time.</param>
        /// <param name="imageKeys">Filter images by a list of image keys.</param>
        /// <param name="lookAt">Filter images that images are taken in the direction of the specified location (and therefore that location is likely to be visible in the images), given as longitude,latitude. Note that If lookat is provided without geospatial filters like closeto or bbox, then it will search global images that look at the point.</param>
        /// <param name="pano">Filer panoramic images (true) or flat images (false).</param>
        /// <param name="perPage">The number of images per page (default 200, and maximum 1000).</param>
        /// <param name="projectKeys">Filter images by projects, given as project keys.</param>
        /// <param name="radius">Filter images within the radius around the closeto location (default 100 meters).</param>
        /// <param name="sequenceKeys">Filter images by sequences.</param>
        /// <param name="startTime">Filter images that are captured since start_time.</param>
        /// <param name="userkeys">Filter images captured by users, given as user keys.</param>
        /// <param name="usernames">Filter images captured by users, given as usernames.</param>
        /// <returns>The response is a FeatureCollection object with a list of image features ordered by captured_at by default. </returns>
        public static FeatureCollection <Image> SearchImage(string cliendId, BoundingBox bbox, Coordinates closeTo, DateTime?endTime, string[] imageKeys, Coordinates lookAt, bool?pano, int?perPage, string[] projectKeys,
                                                            int?radius, string[] sequenceKeys, DateTime?startTime, string[] userkeys, string[] usernames)
        {
            FeatureCollection <Image> jsonResult = null;
            JsonImage       imageToAdd           = null;
            Feature <Image> featureToAdd         = null;
            Geometry        geometryToAdd        = null;
            var             data = RequestData(cliendId, bbox, closeTo, endTime, imageKeys, lookAt, pano, perPage, projectKeys, radius, sequenceKeys, startTime, userkeys, usernames);

            using (JsonTextReader reader = new JsonTextReader(data))
            {
                while (reader.Read())
                {
                    switch (reader.TokenType)
                    {
                    case JsonToken.PropertyName:
                        switch ((string)reader.Value)
                        {
                        case "type":
                            reader.Read();
                            switch ((string)reader.Value)
                            {
                            case "FeatureCollection":
                                jsonResult = new FeatureCollection <Image>((string)reader.Value);
                                break;

                            case "Feature":
                                if (imageToAdd != null)
                                {
                                    featureToAdd.Result = imageToAdd.GenerateImage();
                                }
                                if (geometryToAdd != null)
                                {
                                    featureToAdd.Geometry = geometryToAdd;
                                }
                                if (featureToAdd != null)
                                {
                                    jsonResult.Add(featureToAdd);
                                }
                                featureToAdd = new Feature <Image>((string)reader.Value);
                                break;

                            case "Point":
                                if (geometryToAdd != null)
                                {
                                    featureToAdd.Geometry = geometryToAdd;
                                }
                                geometryToAdd = new Geometry((string)reader.Value);
                                break;

                            default:
                                //	Console.WriteLine($"Unhandled Type ({(string)reader.Value})");
                                break;
                            }
                            break;

                        case "features":
                            break;

                        case "properties":
                            if (imageToAdd != null)
                            {
                                featureToAdd.Result = imageToAdd.GenerateImage();
                            }
                            imageToAdd = new JsonImage();
                            break;

                        case "ca":
                            reader.Read();
                            imageToAdd.CameraAngle = float.Parse(reader.Value.ToString());
                            break;

                        case "camera_make":
                            reader.Read();
                            imageToAdd.CameraMake = (string)reader.Value;
                            break;

                        case "camera_model":
                            reader.Read();
                            imageToAdd.CameraModel = (string)reader.Value;
                            break;

                        case "captured_at":
                            reader.Read();
                            imageToAdd.CapturedAt = DateTime.Parse(reader.Value.ToString());
                            break;

                        case "key":
                            reader.Read();
                            imageToAdd.Key = (string)reader.Value;
                            break;

                        case "pano":
                            reader.Read();
                            imageToAdd.Pano = (bool)reader.Value;
                            break;

                        case "sequence_key":
                            reader.Read();
                            imageToAdd.SequenceKey = (string)reader.Value;
                            break;

                        case "user_key":
                            reader.Read();
                            imageToAdd.UserKey = (string)reader.Value;
                            break;

                        case "username":
                            reader.Read();
                            imageToAdd.Username = (string)reader.Value;
                            break;

                        case "geometry":
                            break;

                        case "coordinates":
                            while ((reader.TokenType != JsonToken.Float && reader.TokenType != JsonToken.Integer) && reader.Read())
                            {
                                ;
                            }
                            float longitude = float.Parse(reader.Value.ToString());
                            reader.Read();
                            float lattitude = float.Parse(reader.Value.ToString());
                            geometryToAdd.Coordinates = new Coordinates(longitude, lattitude);
                            break;

                        default:
                            //Console.WriteLine($"Unhandled Property ({reader.Value}) occured.");
                            break;
                        }
                        break;

                        #region unused
                    case JsonToken.EndObject:
                    case JsonToken.EndArray:
                    case JsonToken.EndConstructor:
                    case JsonToken.StartObject:
                    case JsonToken.StartArray:
                    case JsonToken.StartConstructor:
                        //silencee
                        break;

                    case JsonToken.Date:
                    case JsonToken.Boolean:
                    case JsonToken.String:
                    case JsonToken.Float:
                    case JsonToken.Integer:
                    case JsonToken.Raw:
                    case JsonToken.Null:
                    case JsonToken.Comment:
                    case JsonToken.Undefined:
                    case JsonToken.Bytes:
                    case JsonToken.None:
                    default:
                        //	Console.WriteLine($"Type {reader.TokenType} occured. Value is {reader.Value}.");
                        break;
                        #endregion
                    }
                }
            }

            if (imageToAdd != null)
            {
                featureToAdd.Result = imageToAdd.GenerateImage();
            }
            if (geometryToAdd != null)
            {
                featureToAdd.Geometry = geometryToAdd;
            }
            if (featureToAdd != null)
            {
                jsonResult.Add(featureToAdd);
            }

            return(jsonResult);
        }
        protected override IEnumerator Routine()
        {
            JsonImage image = Cache.Image_Cache.FirstOrDefault(i => i.url == Material.Url);

            if (image == null)
            {
                if (Material.Url.Contains("http://") || Material.Url.Contains("https://"))
                {
                    Variables.Image_Cache_Inc++;

                    image = new JsonImage()
                    {
                        pk      = Variables.Image_Cache_Inc,
                        suffix  = "." + Material.Url.Split('/').Last().Split('.').Last().Split('?').First(),
                        url     = Material.Url,
                        loading = true
                    };

                    Cache.Image_Cache.Add(image);

                    if (Material.LazyLoad)
                    {
                        yield return(new WaitForSeconds(Material.Suspension));
                    }

                    WWW www = new WWW(Material.Url);
                    yield return(www);

                    image.texture = www.texture;
                    image.loading = false;

                    FileStream   stream = new FileStream(Config.Directories.Image.Replace("{0}", image.pk.ToString()).Replace("{1}", image.suffix), FileMode.Create, FileAccess.Write);
                    BinaryWriter writer = new BinaryWriter(stream);
                    writer.Write(www.bytes);
                    writer.Flush();
                    writer.Close();
                    stream.Close();

                    FileStream   stream2 = new FileStream(Config.Directories.Images_Cache_File, FileMode.Create, FileAccess.Write);
                    StreamWriter writer2 = new StreamWriter(stream2);
                    writer2.Write(JsonConvert.SerializeObject(Cache.Image_Cache.Where(i => i.pk != 0).Select(i => new { pk = i.pk, url = i.url, suffix = i.suffix })));
                    writer2.Flush();
                    writer2.Close();
                    stream2.Close();
                }
                else
                {
                    image = new JsonImage()
                    {
                        pk      = 0,
                        suffix  = "." + Material.Url.Split('/').Last().Split('.').Last().Split('?').First(),
                        url     = Material.Url,
                        loading = false
                    };

                    Cache.Image_Cache.Add(image);

                    image.texture = Resources.Load <Texture>(Material.Url);
                }

                OnFinish(new ImageManagerResult()
                {
                    Texture = image.texture
                });
            }
            else
            {
                if (image.texture == null)
                {
                    if (Material.Url.Contains("http://") || Material.Url.Contains("https://"))
                    {
                        if (Material.LazyLoad)
                        {
                            yield return(new WaitForSeconds(Material.Suspension));
                        }

                        if (image.loading)
                        {
                            yield return(Listen(image));
                        }
                        else
                        {
                            WWW www = new WWW("file:///" + Config.Directories.Image.Replace("{0}", image.pk.ToString()).Replace("{1}", image.suffix));
                            yield return(www);

                            image.texture = www.texture;
                        }
                    }
                    else
                    {
                        image.texture = Resources.Load <Texture>(Material.Url);
                    }

                    OnFinish(new ImageManagerResult()
                    {
                        Texture = image.texture
                    });
                }
                else
                {
                    OnFinish(new ImageManagerResult()
                    {
                        Texture = image.texture
                    });
                }
            }

            Dispose();
        }