示例#1
0
        void Merge(string addImageName)
        {
            SixLabors.ImageSharp.Image baseImage = SixLabors.ImageSharp.Image.Load(Path.Combine(temp_path, pictureBox1.Name));
            SixLabors.ImageSharp.Image addImage  = SixLabors.ImageSharp.Image.Load(Path.Combine(temp_path, addImageName));

            SixLabors.ImageSharp.Point toRight = new SixLabors.ImageSharp.Point(x: baseImage.Width, y: 0);
            SixLabors.ImageSharp.Point topLeft = new SixLabors.ImageSharp.Point(x: 0, y: 0);

            SixLabors.ImageSharp.Image newImage = new SixLabors.ImageSharp.Image <Rgba32>(baseImage.Width + addImage.Width, baseImage.Height);

            newImage = newImage.Clone(ipc =>
            {
                ipc.DrawImage(baseImage, topLeft, 1);
                ipc.DrawImage(addImage, toRight, 1);
            });
            using (MemoryStream memoryStream = new MemoryStream())
            {
                SixLabors.ImageSharp.Formats.IImageEncoder imageEncoder = newImage.GetConfiguration().ImageFormatsManager.FindEncoder(PngFormat.Instance);

                newImage.Save(memoryStream, imageEncoder);

                (new Bitmap(memoryStream)).Save(Path.Combine(temp_path, "generated.png"));
                Merge_Execution(new Bitmap(memoryStream));
            }
        }
示例#2
0
        public async Task battlefieldtest()
        {
            ContextIds idList = new ContextIds(Context);

            using (MemoryStream stream = new MemoryStream())
            {
                SixLabors.ImageSharp.Image <SixLabors.ImageSharp.PixelFormats.Rgba32> gif = ImageGenerator.BattlefieldTest();
                gif.Save(stream, new SixLabors.ImageSharp.Formats.Gif.GifEncoder());
                stream.Seek(0, SeekOrigin.Begin);
                await Context.Channel.SendFileAsync(stream, "BattlefieldTest.gif");
            }
        }
示例#3
0
        public static System.IO.Stream WriteTextToImage(string text)
        {
            using (SixLabors.ImageSharp.Image image = SixLabors.ImageSharp.Image <SixLabors.ImageSharp.PixelFormats.Rgba32> .Load("Assets/share-bg.png"))
            {
                SixLabors.Fonts.FontCollection fontCollection = new SixLabors.Fonts.FontCollection();
                SixLabors.Fonts.Font           regularFont    = fontCollection.Install("Assets/TitilliumWeb-SemiBold.ttf").CreateFont(24, SixLabors.Fonts.FontStyle.Regular);
                SixLabors.Fonts.Font           italicFont     = fontCollection.Install("Assets/TitilliumWeb-BoldItalic.ttf").CreateFont(24, SixLabors.Fonts.FontStyle.Italic);

                image.Mutate(x => x.DrawText(text, regularFont, SixLabors.ImageSharp.Color.White, new SixLabors.ImageSharp.PointF(100, 100)));

                System.IO.MemoryStream stream = new System.IO.MemoryStream();
                image.Save(stream, new SixLabors.ImageSharp.Formats.Png.PngEncoder());
                stream.Position = 0;
                return(stream);
            }
        }
示例#4
0
        } // End Function Crop

        public override System.IO.Stream ResizeImage(
            System.IO.Stream inputStream,
            System.IO.Stream outputStream,
            SaveFormat saveFormat,
            float ratio,
            System.Drawing.Size?maxSize)
        {
            SixLabors.ImageSharp.Image <SixLabors.ImageSharp.Rgba32> img =
                SixLabors.ImageSharp.Image.Load(inputStream);
            SixLabors.Primitives.SizeF oldSizeSize = img.Size();

            if (maxSize.HasValue)
            {
                float ratioX = (float)maxSize.Value.Width / (float)img.Width;
                float ratioY = (float)maxSize.Value.Height / (float)img.Width;

                ratio = ratioX < ratioY ? ratioX : ratioY;
            } // End if (maxSize.HasValue)

            SixLabors.Primitives.SizeF newSize = oldSizeSize * ratio;

            if (outputStream == null)
            {
                outputStream = new System.IO.MemoryStream();
            }


            // Compand: whether to compress or expand individual pixel color values
            img.Mutate(x => x.Resize((SixLabors.Primitives.Size)newSize, KnownResamplers.Bicubic, false));

            img.Save(outputStream, GetEncoder(saveFormat));


            // NO, no seek, if we're respone.OutputStream
            if (outputStream.CanSeek)
            {
                outputStream.Seek(0, System.IO.SeekOrigin.Begin);
            }

            return(outputStream);
        } // End Function ResizeImage
示例#5
0
文件: Image.cs 项目: timgurke/Scriber
        public Stream GetStream()
        {
            // currently, a workaround is needed for jpg images.
            // so all images are saved as png.
            //var ms = new MemoryStream();
            //image.Save(ms, new PngEncoder());
            //ms.Position = 0;
            //return ms;

            if (data == null)
            {
                var ms = new MemoryStream();
                image.Save(ms, new PngEncoder());
                ms.Position = 0;
                return(ms);
            }
            else
            {
                return(new MemoryStream(data));
            }
        }
示例#6
0
        } // End Function GetEncoder

        public override System.IO.Stream Crop(
            System.IO.Stream stream,
            SaveFormat saveFormat,
            int x, int y, int width, int height)
        {
            SixLabors.ImageSharp.Image <SixLabors.ImageSharp.Rgba32> img =
                SixLabors.ImageSharp.Image.Load(stream);

            System.IO.Stream outputStream = new System.IO.MemoryStream();

            img.Mutate(a => a.Crop(new SixLabors.Primitives.Rectangle(x, y, width, height)));

            img.Save(outputStream, GetEncoder(saveFormat));

            // NO, no seek, if we're respone.OutputStream
            if (outputStream.CanSeek)
            {
                outputStream.Seek(0, System.IO.SeekOrigin.Begin);
            }

            return(outputStream);
        } // End Function Crop
示例#7
0
        void Image_Edit(int option)
        {
            if (pictureBox1.Name.ToLower() != "picturebox1")
            {
                SixLabors.ImageSharp.Image baseImage = SixLabors.ImageSharp.Image.Load(Path.Combine(temp_path, pictureBox1.Name));
                SixLabors.ImageSharp.Image newImage  = baseImage.Clone(ipc =>
                {
                    switch (option)
                    {
                    case 1:
                        ipc.Grayscale();
                        break;

                    case 2:
                        ipc.Brightness(0.9f);
                        break;

                    case 3:
                        ipc.Brightness(1.1f);
                        break;

                    case 4:
                        ipc.Contrast(1.1f);
                        //ipc.ColorBlindness(ColorBlindnessMode.Achromatomaly);
                        //ipc.ColorBlindness(ColorBlindnessMode.Achromatopsia);
                        //ipc.ColorBlindness(ColorBlindnessMode.Deuteranomaly);
                        //ipc.ColorBlindness(ColorBlindnessMode.Deuteranopia);
                        //ipc.ColorBlindness(ColorBlindnessMode.Protanomaly);
                        //ipc.ColorBlindness(ColorBlindnessMode.Protanopia);
                        //ipc.ColorBlindness(ColorBlindnessMode.Tritanomaly);
                        //ipc.ColorBlindness(ColorBlindnessMode.Tritanopia);
                        break;

                    case 5:
                        ipc.Contrast(0.9f);
                        break;

                    case 6:
                        ipc.Flip(FlipMode.Horizontal);
                        break;

                    case 7:
                        ipc.Flip(FlipMode.Vertical);
                        break;

                    case 8:
                        ipc.GaussianSharpen();
                        break;

                    case 9:
                        ipc.EntropyCrop();
                        break;

                    case 10:
                        ipc.Dither();
                        break;

                    case 11:
                        ipc.AdaptiveThreshold();
                        break;
                    }
                });
                using (MemoryStream memoryStream = new MemoryStream())
                {
                    SixLabors.ImageSharp.Formats.IImageEncoder imageEncoder = newImage.GetConfiguration().ImageFormatsManager.FindEncoder(PngFormat.Instance);

                    newImage.Save(memoryStream, imageEncoder);

                    (new Bitmap(memoryStream)).Save(Path.Combine(temp_path, "generated.png"));
                    Merge_Execution(new Bitmap(memoryStream));
                }
            }
        }
示例#8
0
        void Image_Edit(int option)
        {
            if (mainForm.PictureBoxName.ToLower() != "picturebox1")
            {
                SixLabors.ImageSharp.Image baseImage = SixLabors.ImageSharp.Image.Load(Path.Combine(temp_path, mainForm.PictureBoxName));
                SixLabors.ImageSharp.Image newImage  = baseImage.Clone(ipc =>
                {
                    switch (option)
                    {
                    case 1: ipc.Grayscale(); break;

                    case 2: ipc.Brightness(1.1f); break;

                    case 3: ipc.Brightness(0.9f); break;

                    case 4: ipc.Contrast(1.1f); break;

                    case 5: ipc.Contrast(0.9f); break;

                    case 6: ipc.Flip(FlipMode.Horizontal); break;

                    case 7: ipc.Flip(FlipMode.Vertical); break;

                    case 8: ipc.GaussianSharpen(); break;

                    case 9: ipc.EntropyCrop(); break;

                    case 10: ipc.Dither(); break;

                    case 11: ipc.AdaptiveThreshold(); break;

                    case 12: ipc.HistogramEqualization(); break;

                    case 13: ipc.Invert(); break;

                    case 14: ipc.Kodachrome(); break;

                    case 15: ipc.Lomograph(); break;

                    case 16: ipc.OilPaint(); break;

                    case 17: ipc.Pixelate(); break;

                    case 18: ipc.Polaroid(); break;

                    case 19: ipc.Sepia(); break;

                    case 20: ipc.Vignette(); break;

                    case 21: ipc.Glow(SixLabors.ImageSharp.Color.White); break;

                    case 22: ipc.Glow(SixLabors.ImageSharp.Color.Black); break;

                    case 23: ipc.Hue(20); break;

                    case 24: ipc.Hue(-20); break;

                    case 25: ipc.Saturate(1.4f); break;

                    case 26: ipc.Saturate(0.6f); break;

                    case 27: ipc.Skew(5, 0); break;

                    case 28: ipc.Skew(-5, 0); break;

                    case 29: ipc.Skew(0, 5); break;

                    case 30: ipc.Skew(0, -5); break;

                    case 31: ipc.ColorBlindness(ColorBlindnessMode.Achromatomaly); break;

                    case 32: ipc.ColorBlindness(ColorBlindnessMode.Achromatopsia); break;

                    case 33: ipc.ColorBlindness(ColorBlindnessMode.Deuteranomaly); break;

                    case 34: ipc.ColorBlindness(ColorBlindnessMode.Deuteranopia); break;

                    case 35: ipc.ColorBlindness(ColorBlindnessMode.Protanomaly); break;

                    case 36: ipc.ColorBlindness(ColorBlindnessMode.Protanopia); break;

                    case 37: ipc.ColorBlindness(ColorBlindnessMode.Tritanomaly); break;

                    case 38: ipc.ColorBlindness(ColorBlindnessMode.Tritanopia); break;
                    }
                });
                using (MemoryStream memoryStream = new MemoryStream())
                {
                    SixLabors.ImageSharp.Formats.IImageEncoder imageEncoder = newImage.GetConfiguration().ImageFormatsManager.FindEncoder(PngFormat.Instance);

                    newImage.Save(memoryStream, imageEncoder);

                    (new Bitmap(memoryStream)).Save(Path.Combine(temp_path, "generated.png"));
                    mainForm.Merge_Execution(new Bitmap(memoryStream));
                }
            }
        }
示例#9
0
        public async Task <string> Post(IFormFile image)
        {
            string f      = Directory.GetCurrentDirectory();
            string path   = "/uploads/img/" + string.Format(@"{0}.webp", DateTime.Now.Ticks);
            int    result = 0;
            string response;
            Image  responseImage = new Image();

            try
            {
                using (AnimalProjectDbContext _context = new AnimalProjectDbContext())
                {
                    int maxid = 0;
                    if (_context.Images.Count() > 0)
                    {
                        maxid = _context.Images.OrderByDescending(a => a.id).FirstOrDefault().id;
                    }

                    responseImage.id = maxid + 1;
                    if (image == null || image.Length == 0)
                    {
                        response = BadRequest().StatusCode.ToString() + "," + "Add at least 1 photo";
                    }
                    else
                    {
                        var resizedImgStream = new MemoryStream();

                        using (var memoryStream = new MemoryStream())
                        {
                            await image.CopyToAsync(memoryStream);

                            responseImage.sha = GetHashSha256(memoryStream);
                            if (_context.Images.Any(a => a.sha == responseImage.sha))
                            {
                                responseImage = _context.Images.First(a => a.sha == responseImage.sha);
                                response      = responseImage.path;
                            }
                            else
                            {
                                IResampler sampler = KnownResamplers.Lanczos3;
                                memoryStream.Position = 0;
                                SixLabors.ImageSharp.Image img = SixLabors.ImageSharp.Image.Load(memoryStream);

                                // TODO: ResizeImage(img, 100, 100);
                                if (img.Width * img.Height > 2073600)
                                {
                                    if (img.Width == img.Height)
                                    {
                                        img.Mutate(x => x.Resize(1080, 1080, sampler));
                                    }
                                    else
                                    {
                                        if (img.Width > img.Height)
                                        {
                                            //16:9 case else 4:3 case
                                            if ((img.Width / img.Height) > 1.34)
                                            {
                                                img.Mutate(x => x.Resize(1920, 1080, sampler));
                                            }
                                            else
                                            {
                                                img.Mutate(x => x.Resize(1280, 960, sampler));
                                            }
                                        }
                                        else
                                        {
                                            //16:9 case else 4:3 case
                                            if ((img.Width / img.Height) > 1.34)
                                            {
                                                img.Mutate(x => x.Resize(1080, 1920, sampler));
                                            }
                                            else
                                            {
                                                img.Mutate(x => x.Resize(960, 1280, sampler));
                                            }
                                        }
                                    }

                                    img.Save(resizedImgStream, new BmpEncoder());
                                    using (var webPImage = new ImageFactory(preserveExifData: false))
                                    {
                                        resizedImgStream.Position = 0;
                                        webPImage.Load(resizedImgStream)
                                        .Format(new WebPFormat())
                                        .Quality(90)
                                        .Save(Directory.GetCurrentDirectory() + path);
                                    }
                                    response = path;
                                }
                                else
                                {
                                    using (var webPImage = new ImageFactory(preserveExifData: false))
                                    {
                                        memoryStream.Position = 0;
                                        webPImage.Load(memoryStream)
                                        .Format(new WebPFormat())
                                        .Quality(90)
                                        .Save(Directory.GetCurrentDirectory() + path);
                                    }
                                    response = path;
                                }

                                responseImage.path = path;
                                _context.Images.Add(responseImage);
                                try
                                {
                                    result = _context.SaveChanges();
                                }
                                catch (Exception e)
                                {
                                    response = e.Message;
                                }
                            }
                        };
                    }
                }
            }
            catch (Exception e)
            {
                response = "Fail" + Environment.NewLine + e.Message;
            }

            return(response);
        }