Exemple #1
0
        private void ImagenCaptcha()
        {
            string codigo = GenerateRandomCode();

            // Create a CAPTCHA image using the text stored in the Session object.
            RandomImage ci = new RandomImage(codigo, 300, 75);
            // Change the response headers to output a JPEG image.
            //Response.Clear();
            //Response.ContentType = "image/jpeg";
            // Write the image to the response stream in JPEG format.
            string imagePath = MapPath("~/Images/captcha.Bmp");

            if (File.Exists(imagePath))
            {
                File.Delete(imagePath);
            }

            ci.Image.Save(imagePath, ImageFormat.Bmp);
            // Dispose of the CAPTCHA image object.
            ci.Dispose();

            //  this.Image1.ImageUrl = "~/Account/CImage.ashx?codigo=" + codigo;
            this.Image1.ImageUrl = "~/Images/captcha.Bmp";
            this.Image1.Width    = 225;
            this.Image1.Height   = 75;
            this.Image1.DataBind();

            this.HiddenField1.Value = codigo;
        }
Exemple #2
0
        /// <summary>
        /// 验证图片
        /// </summary>
        /// <param name="width">图片宽度</param>
        /// <param name="height">图片高度</param>
        /// <returns></returns>
        public ImageResult VerifyImage(int width = 56, int height = 20)
        {
            //获得用户唯一标示符sid
            string sid = MallUtils.GetSidCookie();

            //当sid为空时
            if (sid == null)
            {
                //生成sid
                sid = Sessions.GenerateSid();
                //将sid保存到cookie中
                MallUtils.SetSidCookie(sid);
            }

            //生成验证值
            string verifyValue = Randoms.CreateRandomValue(4, false).ToLower();
            //生成验证图片
            RandomImage verifyImage = Randoms.CreateRandomImage(verifyValue, width, height, Color.White, Color.Blue, Color.DarkRed);

            //将验证值保存到session中
            Sessions.SetItem(sid, "verifyCode", verifyValue);

            //输出验证图片
            return(new ImageResult(verifyImage.Image, verifyImage.ContentType));
        }
        /// <summary>
        /// 验证图片
        /// </summary>
        /// <param name="width">图片宽度</param>
        /// <param name="height">图片高度</param>
        /// <returns></returns>
        public ImageResult VerifyImage(int width = 56, int height = 20)
        {
            //获得用户唯一标示符sid
            //string sid = MallUtils.GetSidCookie();
            ////当sid为空时
            //if (sid == null)
            //{
            //    //生成sid
            //    sid = Sessions.GenerateSid();
            //    //将sid保存到cookie中
            //    MallUtils.SetSidCookie(sid);
            //}
            RandomVerifyCode Randoms = new RandomVerifyCode();
            // Randoms.RandomLibrary = BMAConfig.MallConfig.RandomLibrary.ToCharArray();
            //生成验证值
            string verifyValue = Randoms.CreateRandomValue(4, true).ToLower();
            //生成验证图片
            RandomImage verifyImage = Randoms.CreateRandomImage(verifyValue, width, height, Color.White, Color.Blue, Color.DarkRed);

            //将验证值保存到session中
            // Sessions.SetItem(sid, "verifyCode", verifyValue);

            //输出验证图片
            return(new ImageResult(verifyImage.Image, verifyImage.ContentType));
        }
Exemple #4
0
        public ActionResult Index(MysteryDetail mysteryDetail)
        {
            if (string.IsNullOrWhiteSpace(mysteryDetail.Name))
            {
                return(Error(mysteryDetail, "Please ensure all details are filled in."));
            }
            var details = mysteryDetail.Clues as IList <ClueDetail> ?? mysteryDetail.Clues.ToList();

            if (details.Any(clueDetail => string.IsNullOrWhiteSpace(clueDetail.Clue) || clueDetail.Latitude == null || clueDetail.Longitude == null))
            {
                return(Error(mysteryDetail, "Please ensure all details are filled in."));
            }

            var service = CreateTwitterService();

            var token       = TempData["token"];
            var tokenSecret = TempData["tokenSecret"];

            service.AuthenticateWith(token.ToString(), tokenSecret.ToString());

            var finalMystery = details.Aggregate("", (current, detail) => current + detail.Clue);

            foreach (var clueDetail in details)
            {
                var bmp    = RandomImage.GetImage();
                var colour = bmp.GetPixel(0, 0);
                bmp.MakeTransparent(colour);

                var embedded = new EmbeddedDetails
                {
                    Mystery      = mysteryDetail.Name,
                    Clue         = clueDetail.Clue,
                    Latitude     = clueDetail.Latitude.Value,
                    Longitude    = clueDetail.Longitude.Value,
                    Message      = clueDetail.Message,
                    FinalMystery = finalMystery
                };
                var json    = new JavaScriptSerializer().Serialize(embedded);
                var message = Encryption.Encrypt(json);
                var img     = Steganography.Embed(message, bmp);
                var ms      = new MemoryStream();
                img.Save(ms, ImageFormat.Png);
                ms.Seek(0, SeekOrigin.Begin);
                service.SendTweetWithMedia(new SendTweetWithMediaOptions
                {
                    Status = "#twitspionage clue",
                    Images = new Dictionary <string, Stream> {
                        { "Twitspionage clue", ms }
                    }
                });

                if (service.Response.StatusCode == HttpStatusCode.OK && service.Response.Error == null)
                {
                    continue;
                }

                return(Error(mysteryDetail, "Error tweeting clues. Please check your Twitter account and repost any that are missing."));
            }
            return(View("Success"));
        }
Exemple #5
0
        public static void Main(string[] args)
        {
            //Get list of all breeds
            BreedList.ListAllBreed();

            //Call the Verify breed class
            string breedName = "retriever";

            Console.WriteLine("Verify if " + breedName + " " + "Exist" +
                              "\n" + "------------------------------------------------------");
            var exists = VerifyBreed.CheckBreed(breedName);

            Console.WriteLine(exists ? "Pass " + breedName + " is withinlist"
                : "Failed" + breedName + " is not within the list");


            Console.WriteLine("Perform an API request to produce a list of sub-breeds for “retriever”. (Diagram 3) " +
                              "\n" + "------------------------------------------------------");
            SubBreed.SubBreedName(breedName);
            //Console.WriteLine(exists_ ? "Pass " + breedName + " is withinlist"
            //    : "Failed" + breedName + " is not within the list");


            RandomImage.GetRandomImage();

            Console.ReadLine();
        }
Exemple #6
0
        public async Task <IActionResult> UpYunImageServiceHook()
        {
            using (StreamReader reader = new StreamReader(Request.Body))
            {
                try
                {
                    string body = await reader.ReadToEndAsync().ConfigureAwait(true);

                    ContentIdentifiesHookMessages message = JsonSerializer.Deserialize <ContentIdentifiesHookMessages>(body, Common.Utils.MyJsonConvert.GetLeanoteOptions());
                    if (string.IsNullOrEmpty(message.uri) || message.type == UpyunType.test)
                    {
                        Response.StatusCode = 200;
                        return(Content("未找到"));
                    }
                    string fileSHA1 = Path.GetFileNameWithoutExtension(message.uri);

                    RandomImage imagedb = dataContext.RandomImage.Where(b => b.FileSHA1.Equals(fileSHA1)).FirstOrDefault();
                    if (imagedb == null)
                    {
                        Response.StatusCode = (int)HttpStatusCode.NotFound;
                        return(Content("未找到"));
                    }
                    switch (message.type)
                    {
                    case UpyunType.delete:
                        imagedb.IsDelete = true;
                        break;

                    case UpyunType.shield:
                        imagedb.Block = true;
                        break;

                    case UpyunType.cancel_shield:
                        imagedb.Block = false;
                        break;

                    case UpyunType.forbidden:
                        imagedb.Block = true;
                        break;

                    case UpyunType.cancel_forbidden:
                        imagedb.Block = false;
                        break;

                    default:
                        break;
                    }
                    dataContext.SaveChanges();
                    // Do something
                }
                catch (Exception ex)
                {
                    Response.StatusCode = 404;
                    return(Content("false" + ex.Message));
                }
            }
            Response.StatusCode = 200;
            return(Content("ok"));
        }
Exemple #7
0
        private void RandomImageURL()
        {
            _breed = _DogBreeds.message[SelectedBreed];
            string      urlCall = "https://dog.ceo/api/breed/" + Breed + "/images/random";
            RandomImage image   = _dogBreedsService.GetRandomImageURL(urlCall);

            ImageUrl = image.message;
        }
Exemple #8
0
 public static async System.Threading.Tasks.Task InsertImageAsync(RandomImage randomImage)
 {
     using (var db = new DataContext())
     {
         db.RandomImage.Add(randomImage);
         await db.SaveChangesAsync();
     }
 }
 protected void Page_Load(object sender, EventArgs e)
 {
     this.Session["captcha"] = GenerateRandomCode();
     RandomImage ci = new RandomImage(this.Session["captcha"].ToString(), 350, 100);
     this.Response.Clear();
     this.Response.ContentType = "image/jpeg";
     ci.Image.Save(this.Response.OutputStream, ImageFormat.Jpeg);
     ci.Dispose();
 }
    protected void UpdateFileListButton_Clicked(object sender, EventArgs e)
    {
        RandomImage.UpdateDB(WebUtils.GetRandomImgFileList());

        //Empty Runtime cache
        HttpRuntime.Cache.Remove("randomImageList");
        HttpRuntime.Cache.Remove("RandomFileList");
        HttpContext.Current.Session.Remove("RandomImageSequence");
    }
Exemple #11
0
        public void Variant3()
        {
            string CaptchaImageText = Helpers.GenerateRandomCode();
            //CaptchaImageText = "CaptchaImageText";
            // Create a CAPTCHA image using the text stored in the Session object.
            RandomImage ci = new RandomImage(CaptchaImageText, 300, 75);

            this.pictureBox1.Image = ci.Image;
        }
Exemple #12
0
        public FileResult GetCaptchaImage()
        {
            string       text     = Session["CAPTCHA"].ToString();
            MemoryStream ms       = new MemoryStream();
            RandomImage  _captcha = new RandomImage(text, 220, 50);

            _captcha.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            _captcha.Dispose();
            return(File(ms.ToArray(), "image/png"));
        }
        //
        // GET: /RandomImage/

        public FileContentResult GetImage()
        {
            // Create a random code and store it in the Session object.
            Session["CaptchaImageText"] = GenerateRandomCode();
            // Create a CAPTCHA image using the text stored in the Session object.
            using (RandomImage ci = new RandomImage(Session["CaptchaImageText"].ToString(), 300, 75))
            {
                return(File(ci.Image.ToByteArray(System.Drawing.Imaging.ImageFormat.Jpeg), "image/jpeg"));
            }
        }
Exemple #14
0
    protected void Page_Load(object sender, EventArgs e)
    {
        this.Session["captcha"] = GenerateRandomCode();
        RandomImage ci = new RandomImage(this.Session["captcha"].ToString(), 350, 100);

        this.Response.Clear();
        this.Response.ContentType = "image/jpeg";
        ci.Image.Save(this.Response.OutputStream, ImageFormat.Jpeg);
        ci.Dispose();
    }
Exemple #15
0
    public static List <RandomImage> GetRandomImageListFromCache()
    {
        List <RandomImage> randomImageList = HttpRuntime.Cache["randomImageList"] as List <RandomImage>;

        if (randomImageList == null)
        {
            randomImageList = RandomImage.GetRandomImageList();
            HttpRuntime.Cache.Insert("randomImageList", randomImageList, null, DateTime.Now.AddMinutes(10), System.Web.Caching.Cache.NoSlidingExpiration);
        }
        return(randomImageList);
    }
 protected void Page_Load(object sender, EventArgs e)
 {
     // Create a random code and store it in the Session object.
     this.Session["CaptchaImageText"] = GenerateRandomCode();
     // Create a CAPTCHA image using the text stored in the Session object.
     RandomImage ci = new RandomImage(this.Session["CaptchaImageText"].ToString(), 280, 56);
     // Change the response headers to output a JPEG image.
     this.Response.Clear();
     this.Response.ContentType = "image/jpeg";
     // Write the image to the response stream in JPEG format.
     ci.Image.Save(this.Response.OutputStream, ImageFormat.Jpeg);
     // Dispose of the CAPTCHA image object.
     ci.Dispose();
 }
Exemple #17
0
        internal string GetCaptchaBase64ImageStr(string txt)
        {
            // Create a CAPTCHA image using the text stored in the Session object.
            RandomImage ci = new RandomImage(txt, 300, 75);

            using (MemoryStream stream = new MemoryStream())
            {
                ci.Image.Save(stream, ImageFormat.Jpeg);
                stream.Position = 0;
                BinaryReader br    = new BinaryReader(stream);
                byte[]       bytes = br.ReadBytes((Int32)stream.Length);
                return(string.Concat("data:image/jpeg;base64,", Convert.ToBase64String(bytes, 0, bytes.Length)));
            }
        }
    protected override void OnPreRender(EventArgs e)
    {
        string queryString = Request.QueryString["img"];

        if (!string.IsNullOrEmpty(queryString))
        {
            RandomImage ri = WebUtils.GetRandomImageListFromCache().Where(x => x.ImageId == queryString).Take(1).SingleOrDefault();
            if (ri != null)
            {
                string qstrImgPath = cms.Current.GetRootPath + "randimg/" + queryString + ";" + cms.Current.GetRootPath + "RandomImg/" + ri.FileName;
                ScriptManager.RegisterStartupScript(this, this.GetType(), "RandomImageScript", "var randImgUrl='" + qstrImgPath + "';", true);
            }
        }
    }
 public void ProcessRequest(HttpContext context)
 {
     context.Session["CaptchaImageText"] = GenerateRandomCode();
     // Create a CAPTCHA image using the text stored in the Session object.
     var ci = new RandomImage(context.Session
         ["CaptchaImageText"].ToString(),169, 30);
     // Change the response headers to output a JPEG image.
     context.Response.Clear();
     context.Response.ContentType = "image/jpeg";
     // Write the image to the response stream in JPEG format.
     ci.Image.Save(context.Response.OutputStream, ImageFormat.Jpeg);
     // Dispose of the CAPTCHA image object.
     ci.Dispose();
 }
Exemple #20
0
        public ActionResult Captcha()
        {
            var randomCode = RndUtils.GenerateRandomCode();

            Session["code"] = randomCode;
            using (var randomImage = new RandomImage(Session["code"].ToString(), 300, 75))
            {
                Response.Clear();
                Response.ContentType = "image/jpeg";
                randomImage.Image.Save(Response.OutputStream, ImageFormat.Jpeg);
            }

            return(null);
        }
Exemple #21
0
        public void ProcessRequest(HttpContext context)
        {
            context.Session["CaptchaImageText"] = GenerateRandomCode();
            // Create a CAPTCHA image using the text stored in the Session object.
            RandomImage ci = new RandomImage(context.Session["CaptchaImageText"].ToString(), 300, 75);

            // Change the response headers to output a JPEG image.
            context.Response.Clear();
            context.Response.ContentType = "image/jpeg";
            // Write the image to the response stream in JPEG format.
            ci.Image.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            // Dispose of the CAPTCHA image object.
            ci.Dispose();
        }
Exemple #22
0
        // GET: Common
        public ActionResult VerificationImgForm()
        {
            string      code = StringHelper.GenerateRandomCode();
            RandomImage ci   = new RandomImage(code, 240, 60);

            TempData[CaptchaImageText] = code;
            using (MemoryStream ms = new MemoryStream())
            {
                ci.Image.Save(ms, ImageFormat.Jpeg);
                ci.Dispose();

                return(File(ms.ToArray(), "image/jpeg"));
            }
        }
Exemple #23
0
        public ActionResult GenerateCaptcha()
        {
            RandomImage randomimage = new RandomImage();
            string      s           = randomimage.GenerateRandomCode();

            Session["Captcha"] = s;
            FileContentResult imgstream = null;
            RandomImage       img       = new RandomImage(this.Session["captcha"].ToString(), 300, 75);
            var mem = new MemoryStream();

            img.Image.Save(mem, System.Drawing.Imaging.ImageFormat.Jpeg);
            imgstream = this.File(mem.GetBuffer(), "image/Jpeg");
            img.Dispose();
            return(imgstream);
        }
    protected void Page_Load(object sender, EventArgs e)
    {
        // Create a random code and store it in the Session object.
        this.Session["CaptchaImageText"] = GenerateRandomCode();
        // Create a CAPTCHA image using the text stored in the Session object.
        RandomImage ci = new RandomImage(this.Session["CaptchaImageText"].ToString(), 280, 56);

        // Change the response headers to output a JPEG image.
        this.Response.Clear();
        this.Response.ContentType = "image/jpeg";
        // Write the image to the response stream in JPEG format.
        ci.Image.Save(this.Response.OutputStream, ImageFormat.Jpeg);
        // Dispose of the CAPTCHA image object.
        ci.Dispose();
    }
Exemple #25
0
 public IHttpActionResult GetCaptcha()
 {
     try
     {
         RandomImage            CaptchaImageEmail = new RandomImage();
         Tuple <byte[], string> CaptchaEmail      = CaptchaImageEmail.CaptchaImage();
         string  ImageData   = "data:image/jpg;base64," + Convert.ToBase64String(CaptchaEmail.Item1);
         string  CaptchaText = CaptchaEmail.Item2;
         JObject JsonObject  = new JObject();
         JsonObject.Add("ImageData", ImageData);
         JsonObject.Add("CaptchaText", CaptchaText);
         return(Ok(JsonObject));
     }
     catch
     {
         return(NotFound());
     }
 }
Exemple #26
0
        public override Bitmap Hash(byte[] data)
        {
            var bmp = this.GenerateBaseBitmap();

            ushort            gridsize  = (ushort)Math.Ceiling(Math.Sqrt((float)data.Length));
            ushort            pixelSize = (ushort)(Math.Min(this.Width, this.Height) / gridsize);
            List <RectangleF> blocks    = RandomImage.GetGridBlocks(this.Width, this.Height, pixelSize);

            using (var gfx = Graphics.FromImage(bmp))
                using (var enumerator = blocks.GetEnumerator())
                {
                    for (int i = 0; i < data.Length; i++)
                    {
                        enumerator.MoveNext();
                        String s = AddBytes(data[i]);
                        using (Brush brush = new SolidBrush(Color.Black))
                        {
                            ShapesArtist.DrawEmoji(gfx, brush, enumerator.Current, s);
                        }
                    }
                }
            return(bmp);
        }
Exemple #27
0
 private void GetImage(string textImage)
 {
     RandomImage ci = new RandomImage(textImage, 300, 75);
 }
        private async Task GetHttpWebRequestForAnYaAsync(string type)
        {
            string url = "";

            if (type.Equals("少女映画"))
            {
                url = "https://api.r10086.com:8443/少女映画.php?password=20";
            }
            else
            {
                url = $"https://api.r10086.com:8443/" + type + ".php";
            }
            //建立请求
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            //添加Referer信息
            request.Headers.Add(HttpRequestHeader.Referer, "http://www.bz08.cn/");
            //伪装成谷歌浏览器
            //request.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36");
            request.Headers.Add(HttpRequestHeader.UserAgent, "I am a cute web crawler");
            //添加cookie认证信息
            Cookie cookie = new Cookie("PHPSESSID", "s9gajue8h7plf7n5ab8fehiuoq");

            cookie.Domain = "api.r10086.com";
            if (request.CookieContainer == null)
            {
                request.CookieContainer = new CookieContainer();
            }
            request.CookieContainer.Add(cookie);
            //发送请求获取Http响应
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            //HttpWebResponse response = (HttpWebResponse)(await request.GetResponseAsync().ConfigureAwait(false));

            var originalString = response.ResponseUri.OriginalString;

            Console.WriteLine(originalString);
            //获取响应流
            Stream receiveStream = response.GetResponseStream();
            //获取响应流的长度
            int length = (int)response.ContentLength;
            //读取到内存
            MemoryStream stmMemory = new MemoryStream();

            byte[] buffer1 = new byte[length];
            int    i;

            //将字节逐个放入到Byte 中
            while ((i = receiveStream.Read(buffer1, 0, buffer1.Length)) > 0)
            {
                stmMemory.Write(buffer1, 0, i);
            }

            //写入磁盘
            string name = System.IO.Path.GetFileName(originalString);

            byte[] imageBytes = stmMemory.ToArray();
            string fileSHA1   = SHAEncrypt_Helper.Hash1Encrypt(imageBytes);

            //上传到又拍云
            if (!RandomImageService.Exist(type, fileSHA1))
            {
                upyun.writeFile($"/upload/{SHAEncrypt_Helper.MD5Encrypt(type)}/{fileSHA1}{Path.GetExtension(name)}", imageBytes, true);
                RandomImage randomImage = new RandomImage()
                {
                    RandomImageId = SnowFlake_Net.GenerateSnowFlakeID(),
                    TypeName      = type,
                    TypeNameMD5   = SHAEncrypt_Helper.MD5Encrypt(type),
                    TypeNameSHA1  = SHAEncrypt_Helper.Hash1Encrypt(type),
                    FileName      = name,
                    FileNameMD5   = SHAEncrypt_Helper.MD5Encrypt(name),
                    FileNameSHA1  = SHAEncrypt_Helper.Hash1Encrypt(name),
                    FileSHA1      = fileSHA1,
                    Sex           = false,
                };
                //记录到数据库
                await RandomImageService.InsertImageAsync(randomImage).ConfigureAwait(false);
            }

            //name = $"{dir}{dsc}upload{dsc}{type}{dsc}{name}";
            //if (!Directory.Exists($"{dir}{dsc}upload{dsc}{type}"))
            //{
            //    Directory.CreateDirectory($"{dir}{dsc}upload{dsc}{type}");
            //}
            //if (!System.IO.File.Exists(name))
            //{
            //    FileStream file = new FileStream(name, FileMode.Create, FileAccess.ReadWrite);
            //    file.Write(stmMemory.ToArray());
            //    file.Flush();
            //    file.Close();
            //}
            //FileStream file = new FileStream("1.jpg",FileMode.Create, FileAccess.ReadWrite);
            //关闭流
            stmMemory.Close();
            receiveStream.Close();
            response.Close();
        }
 public ActionResult GenerateCaptcha()
 {
     RandomImage randomimage = new RandomImage();
     string s = randomimage.GenerateRandomCode();
     Session[ConstantKeys.CaptchaSession] = s;
     FileContentResult imgstream = null;
     RandomImage img = new RandomImage(s, 200, 50);
     var mem = new MemoryStream();
     img.Image.Save(mem, System.Drawing.Imaging.ImageFormat.Jpeg);
     imgstream = this.File(mem.GetBuffer(), "image/Jpeg");
     img.Dispose();
     return imgstream;
 }
Exemple #30
0
        /// <summary>
        /// 创建随机图片
        /// </summary>
        /// <param name="value">值</param>
        /// <param name="imageWidth">图片宽度</param>
        /// <param name="imageHeight">图片高度</param>
        /// <param name="imageBGColor">图片背景颜色</param>
        /// <param name="imageTextColor1">图片文字颜色</param>
        /// <param name="imageTextColor2">图片文字颜色</param>
        /// <returns>随机图片</returns>
        public RandomImage CreateRandomImage(string value, int imageWidth, int imageHeight, Color imageBGColor, Color imageTextColor1, Color imageTextColor2)
        {
            Bitmap   image = new Bitmap(imageWidth, imageHeight);
            Graphics g     = Graphics.FromImage(image);
            //保存图片数据
            MemoryStream stream = new MemoryStream();

            try
            {
                //生成随机生成器
                //Random random = new Random();

                //清空图片背景色
                g.Clear(imageBGColor);

                //画图片的背景噪音线
                for (int i = 0; i < 5; i++)
                {
                    int x1 = _random.Next(image.Width);
                    int x2 = _random.Next(image.Width);
                    int y1 = _random.Next(image.Height);
                    int y2 = _random.Next(image.Height);

                    g.DrawLine(new Pen(Color.FromArgb(_random.Next(255), _random.Next(255), _random.Next(255))), x1, y1, x2, y2);
                }

                Font font = new Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
                LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),
                                                                    imageTextColor1,
                                                                    imageTextColor2,
                                                                    1.2f,
                                                                    true);
                g.DrawString(value, font, brush, 2, 2);

                //画图片的前景噪音点
                for (int i = 0; i < 80; i++)
                {
                    int x = _random.Next(image.Width);
                    int y = _random.Next(image.Height);

                    image.SetPixel(x, y, Color.FromArgb(_random.Next()));
                }

                //画图片的边框线
                g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);

                RandomImage verifyImage = new RandomImage();
                image.Save(stream, ImageFormat.Jpeg);
                verifyImage.Image       = stream.ToArray();
                verifyImage.ContentType = "image/jpeg";

                return(verifyImage);
            }
            finally
            {
                if (stream != null)
                {
                    stream.Dispose();
                }
                if (g != null)
                {
                    g.Dispose();
                }
                if (image != null)
                {
                    image.Dispose();
                }
            }
        }
Exemple #31
0
        public async Task <IActionResult> GetRandomImage(string type)
        {
            int hour = DateTime.Now.Hour;

            lock (_fuseObj)
            {
                _fuseCount++;
            }
            string ext = null;

            if (string.IsNullOrEmpty(type))
            {
                type = "动漫综合2";
            }
            if (type.Equals("少女映画"))
            {
                string userHex = HttpContext.Session.GetString("_userId");
                if (string.IsNullOrEmpty(userHex))
                {
                    //没登陆
                    return(Redirect("/Auth/login"));
                }
            }
            if (!_randomImageList.ContainsKey(type))
            {
                _randomImageList.Add(type, new List <RandomImage>(size));
            }
            RandomImage randomImage = RandomImageService.GetRandomImage(type);

            if (_randomImageList[type].Count < size)
            {
                randomImage = RandomImageService.GetRandomImage(type);
                if (random == null)
                {
                    return(NotFound());
                }
                _randomImageList[type].Add(randomImage);
            }
            else
            {
                if (DateTime.Now.Hour != _initTime)
                {
                    _fuseCount = 0;
                    _initTime  = DateTime.Now.Hour;
                    _randomImageList[type].Clear();
                    randomImage = RandomImageService.GetRandomImage(type);
                    if (random == null)
                    {
                        return(NotFound());
                    }
                    _randomImageList[type].Add(randomImage);
                }
                else
                {
                    if (_fuseCount > _randomImageFuseSize)
                    {
                        Response.StatusCode = (int)HttpStatusCode.BadGateway;
                        return(Content("接口并发太高,接口已经熔断"));
                    }
                    int index = random.Next(_randomImageList[type].Count - 1);
                    randomImage = _randomImageList[type][index];
                }
            }

            if (randomImage == null)
            {
                return(NotFound());
            }
            ext = Path.GetExtension(randomImage.FileName);
            var           headers       = Request.Headers;
            StringBuilder stringBuilder = new StringBuilder();

            foreach (var item in headers)
            {
                stringBuilder.Append(item.Key + "---" + item.Value + "\r\n");
            }
            string        RealIP        = headers["X-Forwarded-For"].ToString().Split(",")[0];
            AccessRecords accessRecords = new AccessRecords()
            {
                AccessId        = SnowFlake_Net.GenerateSnowFlakeID(),
                IP              = RealIP,
                X_Real_IP       = headers["X-Real-IP"],
                X_Forwarded_For = headers["X-Forwarded-For"],
                Referrer        = headers["Referer"],
                RequestHeader   = stringBuilder.ToString(),
                AccessTime      = DateTime.Now,
                UnixTime        = (long)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds,
                TimeInterval    = -1,
                url             = "/api/GetRandomImage"
            };
            await AccessService.InsertAccessAsync(accessRecords).ConfigureAwait(false);

            type         = randomImage.TypeNameMD5;
            upyun.secret = postgreSQLConfig.upyunSecret;;
            Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;

            unixTimestamp += 3;
            //开启token防盗链

            if (postgreSQLConfig.token_anti_theft_chain)
            {
                string _upt = upyun.CreatToken(unixTimestamp.ToString(), upyun.secret, $"/upload/{type}/{randomImage.FileSHA1}{ext}");
                return(Redirect($"https://upyun.morenote.top/upload/{type}/{randomImage.FileSHA1}{ext}?_upt={_upt}"));
            }
            else
            {
                return(Redirect($"https://upyun.morenote.top/upload/{type}/{randomImage.FileSHA1}{ext}"));
            }
        }