Example #1
0
    void Start()
    {
        _imageQueue = new Queue <Sprite>();
        nextImageButton.onClick.AddListener(NextImage);

        _imageFetcher = new ImageFetcher(this);
        StartCoroutine(_imageFetcher.GetGallery());
    }
        /// <summary>
        /// Generates a document on the server and returns the full url to it.
        /// </summary>
        /// <param name="output"></param>
        /// <returns></returns>
        public static string GenerateImageOnYumlServer(YumlClassDiagram output)
        {
            Logger.Log(string.Format("Generating image on yuml server, class diagram: '{0}'", output), LogLevel.High);

            ServicePointManager.Expect100Continue = false;
            var req = WebRequest.Create(YumlClassUrl);

            //req.Proxy = new System.Net.WebProxy(ProxyString, true);
            //Add these, as we're doing a POST
            req.ContentType = "application/x-www-form-urlencoded";
            req.Method      = "POST";
            //We need to count how many bytes we're sending. Post'ed Faked Forms should be name=value&
            string diagramDescriptionRaw = output.ToString();
            string diagramDescription    = "dsl_text=" + EncodeForHttpPost(diagramDescriptionRaw);

            byte[] bytes = Encoding.ASCII.GetBytes(diagramDescription);
            req.ContentLength = bytes.Length;

            using (var outputStream = req.GetRequestStream())
            {
                outputStream.Write(bytes, 0, bytes.Length); //Push it out there
                outputStream.Close();
            }

            string htmlContent;

            using (var response = req.GetResponse())
            {
                using (var reader = new StreamReader(response.GetResponseStream()))
                {
                    htmlContent = reader.ReadToEnd().Trim();
                }
            }

            var imageFetcher = new ImageFetcher(htmlContent);

            var thread = new Thread(imageFetcher.FetchImageSrc);

            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
            thread.Join();

            return(imageFetcher.ImageUrl);
        }
        private void Navigate(PaginationAction paginationAction)
        {
            switch (paginationAction)
            {
            case PaginationAction.First:
                CurrentPage = 1;
                ItemSource  = new ObservableCollection <object>(ImageFetcher.GetItemsFromDataSource(CurrentPage, PageSize, searchString));
                break;

            case PaginationAction.Last:
                CurrentPage = TotalPages;
                ItemSource  = new ObservableCollection <object>(ImageFetcher.GetItemsFromDataSource(CurrentPage, PageSize, searchString));
                break;

            case PaginationAction.Next:
                if (CurrentPage < TotalPages - 1)
                {
                    CurrentPage++;
                    ItemSource = new ObservableCollection <object>(ImageFetcher.GetItemsFromDataSource(CurrentPage, PageSize, searchString));
                }
                break;

            case PaginationAction.Previous:
                if (CurrentPage > 1)
                {
                    CurrentPage--;
                    ItemSource = new ObservableCollection <object>(ImageFetcher.GetItemsFromDataSource(CurrentPage, PageSize, searchString));
                }
                break;

            case PaginationAction.OnInit:
                CurrentPage = 1;
                int totalRecords = ImageFetcher.GetTotalRecords(searchString);

                if (totalRecords > 0)
                {
                    TotalPages = Convert.ToUInt32(totalRecords) / PageSize;
                }
                ItemSource = new ObservableCollection <object>(ImageFetcher.GetItemsFromDataSource(CurrentPage, PageSize, searchString));
                break;
            }
        }
Example #4
0
        public ActionResult Post([FromBody] SpriteDetails details)
        {
            //sanity
            if (!details.ImagePaths.Any() || (details.Height < 1 || details.Width < 1))
            {
                return(this.BadRequest());
            }

            var tasks = details.ImagePaths.Select(url =>
            {
                var fetchTask = new ImageFetcher().FetchImage(url);
                return(fetchTask.ContinueWith(image => new Yearg.ImageCenterCroper().CropImage(image.Result, details.Height, details.Width)));
            }).ToArray();

            Task.WaitAll(tasks);
            var newImage = new ImageConcatenator().CreateSprite(tasks.Select(z => z.Result).ToList(), details.Height, details.Width);

            var fs = new MemoryStream();

            newImage.SaveAsJpeg(fs);
            return(File(fs, "image/jpeg"));
        }
Example #5
0
        public string[] GetImages()
        {
            var imf = new ImageFetcher();

            return(imf.GetImagesPaths());
        }
Example #6
0
        private async Task SendImageAsync(ImageFetcher Fetcher, params string[] Args)
        {
            int Count = 1;

            if (Args.Length > 0)
            {
                if (int.TryParse(Args[Args.Length - 1], out Count))
                {
                    Args = Args.Take(Args.Length - 1).ToArray();

                    if (Count < 1)
                    {
                        await Context.Channel.SendMessageAsync(GetGlobalEntry("NegativeCount"));

                        return;
                    }
                    else if (Count > 10)
                    {
                        Count = 10;
                    }
                }
                else
                {
                    Count = 1;
                }
            }

            List <string> ImageUrls = await Fetcher.GetImagesAsync(Args, Global.IsNsfwChannel(Settings, Context.Channel.Id), Count);

            if (ImageUrls.Count > 0)
            {
                int[] Sent = new int[Count];

                for (int i = 0; i < Count; i++)
                {
                    if (ImageUrls.Count == i)
                    {
                        await Context.Channel.SendMessageAsync(GetGlobalEntry("NoMoreImagesOfTag"));

                        break;
                    }

                    int Random;
                    if (Count >= ImageUrls.Count)
                    {
                        Random = i;
                    }
                    else
                    {
                        do
                        {
                            Random = Global.Random.Next(0, ImageUrls.Count);
                        }while (Sent.Contains(Random));
                    }

                    string Url = ImageUrls[Random].Replace("\\/", "/");

                    EmbedBuilder Builder = new EmbedBuilder
                    {
                        Color    = await Global.GetAverageColorAsync(Url),
                        ImageUrl = Url,
                        Title    = GetGlobalEntry("ImgUrlNoLoad", "N", (i + 1).ToString()),
                        Url      = Url
                    };


                    await Context.Channel.SendMessageAsync("", embed : Builder.Build());
                }
            }
            else
            {
                await Context.Channel.SendMessageAsync(GetGlobalEntry("NoImagesOfTag", "TAGS", string.Join(" ", Args)));
            }
        }