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)); } }
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"); } }
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); } }
} // 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
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)); } }
} // 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
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)); } } }
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)); } } }
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); }