GetEncoder(SaveFormat saveFormat) { SixLabors.ImageSharp.Formats.IImageEncoder enc = null; switch (saveFormat) { case SaveFormat.Png: enc = new SixLabors.ImageSharp.Formats.Png.PngEncoder(); break; case SaveFormat.Jpg: enc = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder(); break; case SaveFormat.Gif: enc = new SixLabors.ImageSharp.Formats.Gif.GifEncoder(); break; case SaveFormat.Bmp: enc = new SixLabors.ImageSharp.Formats.Bmp.BmpEncoder(); break; default: enc = new SixLabors.ImageSharp.Formats.Png.PngEncoder(); break; } return(enc); } // End Function GetEncoder
public IImageEncoder ConvertEncoder() { SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder encoder = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder(); if (_quality.HasValue) { encoder.Quality = _quality.Value; } return(encoder); }
public static void fooo(string fileName, SaveFormat saveFormat) { //var imagePath = Microsoft.AspNetCore.Http.PathString.FromUriComponent("/" + url); //var fileInfo = _fileProvider.GetFileInfo(imagePath); var fileInfo = new System.IO.FileInfo(fileName); //if (!fileInfo.Exists) { return NotFound(); } int width = 100; int height = 100; byte[] data = null; using (MemoryStream outputStream = new MemoryStream()) { using (System.IO.Stream inputStream = fileInfo.OpenRead()) { using (Image <Rgba32> image = Image.Load(inputStream)) { image.Mutate( delegate(IImageProcessingContext <Rgba32> mutant) { mutant.Resize(image.Width / 2, image.Height / 2); } ); IImageEncoder enc = null; if (saveFormat == SaveFormat.Jpg) { enc = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder(); } else if (saveFormat == SaveFormat.Png) { enc = new SixLabors.ImageSharp.Formats.Png.PngEncoder(); } else if (saveFormat == SaveFormat.Png) { enc = new SixLabors.ImageSharp.Formats.Gif.GifEncoder(); } else if (saveFormat == SaveFormat.Bmp) { enc = new SixLabors.ImageSharp.Formats.Bmp.BmpEncoder(); } image.Save(outputStream, enc); } // End Using image data = outputStream.ToArray(); } // End Using inputStream } // End Using outputStream } // End Sub fooo
public IMAGEENCODER GetEncoder() { var encoder = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder { Quality = Quality }; void act(SDK.ExportContext ctx, IMAGE32 img) => ctx.WriteStream(s => img.Save(s, encoder)); return(act); }
public Task ProcessAsync(BlobProcessHandlerContext context) { var configuration = context.ContainerConfiguration.GetImageResizeConfiguration(); try { using (Image image = Image.Load(context.BlobStream)) { if (configuration.ImageSizeMustBeLargerThanPreset) { if (image.Width < configuration.ImageWidth || image.Height < configuration.ImageHeight) { throw new BusinessException( code: "Dignite.Abp.BlobStoring:010004", message: "Image size must be larger than Preset!", details: "Uploaded image must be larger than: " + configuration.ImageWidth + "x" + configuration.ImageHeight ); } } if (image.Width > configuration.ImageWidth || image.Height > configuration.ImageHeight) { image.Mutate(x => { x.Resize(new ResizeOptions() { Mode = ResizeMode.Max, Size = new Size(configuration.ImageWidth, configuration.ImageHeight) }); }); var encoder = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder() { Quality = 40 }; context.BlobStream.Position = 0; image.Save(context.BlobStream, encoder); context.BlobStream.SetLength(context.BlobStream.Position); context.BlobStream.Position = 0; } } } catch (SixLabors.ImageSharp.InvalidImageContentException exception) { } return(Task.CompletedTask); }
public static byte[] ResizeImage(string fileName, SaveFormat saveFormat) { byte[] data = null; using (MemoryStream outputStream = new MemoryStream()) { using (Image <Rgba32> image = Image.Load(fileName)) { image.Mutate( delegate(IImageProcessingContext <Rgba32> mutant) { mutant.Resize(image.Width / 22, image.Height / 22); } ); IImageEncoder enc = null; if (saveFormat == SaveFormat.Jpg) { enc = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder(); } else if (saveFormat == SaveFormat.Png) { enc = new SixLabors.ImageSharp.Formats.Png.PngEncoder(); } else if (saveFormat == SaveFormat.GIF) { enc = new SixLabors.ImageSharp.Formats.Gif.GifEncoder(); } else if (saveFormat == SaveFormat.Bmp) { enc = new SixLabors.ImageSharp.Formats.Bmp.BmpEncoder(); } image.Save(@"D:\myfileformat." + saveFormat.ToString().ToLowerInvariant(), enc); image.SaveAsJpeg(outputStream); } // End Using image data = outputStream.ToArray(); } // End Using outputStream System.IO.File.WriteAllBytes(@"d:\myfile.jpg", data); return(data); } // End Sub ResizeImage
public static async Task <string> CreateProfileImage(IUser user, Stream profilePicture) { var imageData = await GetProfileImageData(user, profilePicture); var encoder = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder(); using var background = await Image.LoadAsync(imageData.BackgroundPath); background.Mutate(x => x.Resize(imageData.Size) .DrawContainers(imageData.ImageContainers)); await background.SaveAsync($"{_imagePath}{user.DiscordID}.jpg"); return($"{_imagePath}{user.DiscordID}.jpg"); }
private void ResizeImage(Sticker sticker) { using (var image = SixLabors.ImageSharp.Image.Load(sticker.Blob)) { var size = 500f * 500f; var width = Math.Sqrt(size * (image.Width / (float)image.Height)); var height = size / width; image.Mutate(x => x.Resize((int)width, (int)height)); using (var stream = new MemoryStream()) { var encoder = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder(); image.Save(stream, encoder); sticker.Blob = stream.ToArray(); sticker.BlobMediaType = "image/png"; } } }
public void Save(System.IO.Stream strm, System.Drawing.Imaging.ImageFormat format) { SixLabors.ImageSharp.Formats.IImageEncoder enc = null; if (format == System.Drawing.Imaging.ImageFormat.Jpeg) { enc = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder(); } else if (format == System.Drawing.Imaging.ImageFormat.Png) { enc = new SixLabors.ImageSharp.Formats.Png.PngEncoder(); } else if (format == System.Drawing.Imaging.ImageFormat.Gif) { enc = new SixLabors.ImageSharp.Formats.Gif.GifEncoder(); } else if (format == System.Drawing.Imaging.ImageFormat.Bmp) { enc = new SixLabors.ImageSharp.Formats.Bmp.BmpEncoder(); } this.m_image.Save(strm, enc); }
private async Task ApplyAsync() { try { if (!string.IsNullOrEmpty(this.tb_ImageFile.Text) && File.Exists(this.tb_ImageFile.Text)) { //SixLabors.ImageSharp.Configuration config = new Configuration(); SixLabors.ImageSharp.Image image = await SixLabors.ImageSharp.Image.LoadAsync(this.tb_ImageFile.Text); int width = Convert.ToInt32(tb_Width.Text); int height = Convert.ToInt32(tb_Height.Text); int sizepercent = Convert.ToInt32(tb_SizePercent.Text); if (width != -1 && height != -1 && image.Width != width || image.Height != height) //hard coded size { Log($"Resizing image from {image.Width},{image.Height} to {width},{height}..."); image.Mutate(img => img.Resize(width, height)); } else if (sizepercent > 0 && sizepercent < 100) { double fractionalPercentage = (sizepercent / 100.0); int outputWidth = (int)(image.Width * fractionalPercentage); int outputHeight = (int)(image.Height * fractionalPercentage); Log($"Resizing image to {sizepercent} from {image.Width},{image.Height} to {outputWidth},{outputHeight}..."); image.Mutate(img => img.Resize(outputWidth, outputHeight)); } int quality = Convert.ToInt32(this.tb_jpegquality.Text); MemoryStream stream = new System.IO.MemoryStream(); if (quality > 0 && quality < 100) { //string tfile = Path.Combine(Environment.GetEnvironmentVariable("TEMP"), "_AITOOL\tmpimage.jpg"); //Save the image using the specified jpeg compression Log($"Compressing jpeg to {quality}% quality..."); SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder encoder = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder(); encoder.Quality = quality; await image.SaveAsJpegAsync(stream, encoder); image = await SixLabors.ImageSharp.Image.LoadAsync(stream); } int bright = Convert.ToInt32(tb_brightness.Text); if (bright > 1) { } // render onto an Image //image.SaveAsBmp(stream); System.Drawing.Image img = System.Drawing.Image.FromStream(stream); // dispose the old image before displaying the new one //pictureBox1.Image?.Dispose(); this.pictureBox1.BackgroundImage = img; } else { MessageBox.Show("File does not exist."); } } catch (Exception ex) { Log("Error: " + Global.ExMsg(ex)); } }
//public unsafe void SendImage(Bitmap bitmap, int screenWidth, int screenHeight, int screenIndex, bool compress, int targetFPS) public void SendImage(BitmapXama bitmap, int screenWidth, int screenHeight, int screenIndex, bool compress, float targetFPS) { try { // get data length int dataLength, imageDataSize; imageDataSize = bitmap.Width * bitmap.Height * 3; //PixelFormat.Format24bprRgb dataLength = imageDataSize; // // compress if needed if (GlobalConfiguration.isStreamRawH264Data) { dataLength = bitmap.getInternalBuffer().Length; } else if (GlobalConfiguration.isConvJpeg) { if (compressedStream == null) { compressedStream = new MemoryStream(); } else { compressedStream.SetLength(0); } var tmpBitmapArr = bitmap.getInternalBuffer(); Array.Resize <Byte>(ref tmpBitmapArr, imageDataSize); var img = SixLabors.ImageSharp.Image.LoadPixelData <SixLabors.ImageSharp.PixelFormats.Bgr565>(tmpBitmapArr, bitmap.Width, bitmap.Height); var encoder = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder(); encoder.Quality = GlobalConfiguration.jpegEncodeQuality; //default value is 75 img.Save(compressedStream, encoder); compressedStream.Flush(); dataLength = (int)compressedStream.Length; } else if (compress) { if (compressedStream == null) { compressedStream = new MemoryStream(); } else { compressedStream.SetLength(0); } //using (var bitmapStream = new UnmanagedMemoryStream((byte*)locked.Scan0, dataLength)) var tmpBitmapArr = bitmap.getInternalBuffer(); Array.Resize <Byte>(ref tmpBitmapArr, imageDataSize); var bitmapStream = new MemoryStream(tmpBitmapArr); using (var gzip = new GZipStream(compressedStream, CompressionMode.Compress, true)) { bitmapStream.CopyTo(gzip); } compressedStream.Flush(); dataLength = (int)compressedStream.Length; } // send meta data var metaData = new MetaData() { type = MetaDataTypes.ImageData, compressed = compress, dataSize = dataLength, //dataSize = -1, // for Debug imageDataSize = imageDataSize, width = (short)bitmap.Width, height = (short)bitmap.Height, screenWidth = (short)screenWidth, screenHeight = (short)screenHeight, //screenIndex = (short)screenIndex, //format = bitmap.PixelFormat, targetFPS = targetFPS //mouseX = (short) frameNumber }; frameNumber++; SendMetaDataInternal(metaData); if (compress || GlobalConfiguration.isConvJpeg) { SendBinary(compressedStream.GetBuffer(), dataLength); } else { // send bitmap data SendBinary(bitmap.getInternalBuffer(), dataLength); } } catch (Exception ex) { throw ex; } }
public async Task <ScanResultEquip> ParseResultWindowEquip(string fileName, ScanInfo scanInfo, AndroidConnector android) { ScanResultEquip exchangeInfo = new ScanResultEquip() { Found = true, ScanInfo = scanInfo }; using (var image = Image.Load <Rgba32>(fileName)) { image.Clone(ctx => ctx.Crop(new Rectangle(996, 159, 549, 66))).Save($"itemname.png"); string itemName = GetTextFromImage("itemname.png"); if (itemName.ToLower() != scanInfo.RealName.ToLower()) { scanInfo.Message = $"Something is wrong, names do NOT match. Expected {scanInfo.RealName.ToLower()} but got {itemName.ToLower()}"; return(ScanResult.BuildError <ScanResultEquip>(scanInfo)); } exchangeInfo.Price = int.Parse(GetPriceEquip(image), CultureInfo.InvariantCulture); exchangeInfo.SnapTime = GetSnapTime(image); int i = 0; //scan for multiple items bool enchanted = false; bool foundRefine = false; while (!Program.CancelScan) { using (var image2 = Image.Load <Rgba32>(fileName)) image2.Clone(ctx => ctx.Crop(new Rectangle(383, 261, 553, 453))).Save($"enchant{i}.png"); string hasEnchant = GetTextFromImage($"enchant{i}.png"); Console.WriteLine($"- Text Read: \n\n{hasEnchant}\n\n"); if (hasEnchant.ToLower().Contains("refine ") && !foundRefine && !enchanted && hasEnchant.ToLower().IndexOf("refine ") != hasEnchant.ToLower().IndexOf("refine +6 effective")) { string refine = hasEnchant.ToLower(); refine = refine.Replace("\r\n", "\n"); while (refine.Contains("\n\n")) { refine = refine.Replace("\n\n", "\n"); } refine = refine.Substring(refine.IndexOf("\nrefine ") + 8).Trim(); if (refine.IndexOf("\n") > 0) { refine = refine.Substring(0, refine.IndexOf("\n")).Trim(); } Console.WriteLine(refine); int refineLevel = 0; if (refine.Contains("/")) { try { refineLevel = int.Parse(refine.Substring(0, refine.IndexOf("/"))); foundRefine = true; } catch (FormatException e) { scanInfo.Message = "Something is wrong, error parsing refine level: " + refine; Console.WriteLine(e); return(ScanResult.BuildError <ScanResultEquip>(scanInfo)); } } if (refine.Contains("atk+")) { int atk = int.Parse(refine.Substring(refine.IndexOf("atk+") + 4)); foundRefine = true; //TODO: check if atk matches refineLevel } exchangeInfo.RefinementLevel = refineLevel; } if (hasEnchant.ToLower().Contains("enchanted")) { enchanted = true; } if (hasEnchant.ToLower().Contains("equipment upgrade")) { if (enchanted) { MemoryStream ms = new MemoryStream(); var jpegEncoder = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder { Quality = 10 }; using (var image2 = Image.Load <Rgba32>($"enchant{i}.png")) image2.Clone(ctx => ctx.Resize(new ResizeOptions { Size = image2.Size() / 2 })).SaveAsJpeg(ms, jpegEncoder); exchangeInfo.EnchantmentImage = System.Convert.ToBase64String(ms.GetBuffer()); if (!hasEnchant.ToLower().Contains("enchanted")) { Console.WriteLine("Scrolled too far"); exchangeInfo.Enchantments = new List <string>() { "scrolled too far" }; break; } hasEnchant = hasEnchant.ToLower(); hasEnchant = hasEnchant.Replace("\r\n", "\n"); while (hasEnchant.Contains("\n\n")) { hasEnchant = hasEnchant.Replace("\n\n", "\n"); } hasEnchant = hasEnchant.Substring(hasEnchant.IndexOf("enchanted attribute:") + 20).Trim(); hasEnchant = hasEnchant.Substring(0, hasEnchant.IndexOf("equipment upgrade")).Trim(); hasEnchant = hasEnchant.Replace("mapr ", "maxhp "); exchangeInfo.Enchantments = hasEnchant.Split("\n", 4).ToList(); } break; } if (hasEnchant.ToLower().Contains("exchange price")) { Console.WriteLine("Scrolled wayyyyyy too far"); break; } await android.Swipe(555, 500, 555, 300, 500); await Task.Delay(100); await android.Tap(1500, 960); await android.Screenshot(fileName); i++; } exchangeInfo.Found = true; } return(exchangeInfo); }
public static MemoryStream Mark(MemoryStream inStream, string text, string fontPath) { text = $"···甘井子区重点车辆管理系统·{text}···"; //首先先判断该图片是否是 gif动画,如果为gif动画不对图片进行改动 using (Image <Rgba32> img = Image.Load(inStream.ToArray(), out IImageFormat format)) { FontCollection fonts = new FontCollection(); FontFamily fontFamily = fonts.Install(fontPath); if (fontFamily == null) { SystemFonts.TryFind("DejaVu Sans", out fontFamily); } if (fontFamily == null) { SystemFonts.TryFind("Book", out fontFamily); } if (fontFamily == null) { SystemFonts.TryFind("DengXian", out fontFamily); } if (fontFamily == null) { SystemFonts.TryFind("SimSun", out fontFamily); } if (fontFamily == null) { SystemFonts.TryFind("Arial", out fontFamily); } if (fontFamily == null) { fontFamily = SystemFonts.Families.First(t => t.Name.Contains("Hei") || t.Name.Contains("黑")); } if (fontFamily == null) { fontFamily = SystemFonts.Families.First(); } var font = fontFamily.CreateFont(14f); using (var img2 = img.Clone(ctx => ctx.ApplyScalingWaterMark(font, text, Rgba32.FromHex("ffffffdd"), 20, false))) { IImageEncoder encoder = null; if (format == ImageFormats.Bmp) { encoder = new SixLabors.ImageSharp.Formats.Bmp.BmpEncoder(); } else if (format == ImageFormats.Jpeg) { encoder = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder(); } else if (format == ImageFormats.Png) { encoder = new SixLabors.ImageSharp.Formats.Png.PngEncoder(); } else if (format == ImageFormats.Gif) { encoder = new SixLabors.ImageSharp.Formats.Gif.GifEncoder(); } MemoryStream outStream = new MemoryStream(); img2.Save(outStream, encoder); outStream.Close(); return(outStream); } } }
private void convertToZip(string filename) { if (string.IsNullOrEmpty(SelectedFilePath)) { return; } if (File.Exists(filename)) { if (MessageBox.Show("Overwrite?", "Save", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { File.Delete(filename); } else { return; } } Task <int> task1 = Task.Run(() => { IsVisibleProgress = Visibility.Visible; IsEnableProgressClose = false; var opts = new SharpCompress.Writers.WriterOptions(CompressionType.Deflate); opts.ArchiveEncoding = new SharpCompress.Common.ArchiveEncoding(); //opts.ArchiveEncoding.Default = System.Text.Encoding.GetEncoding("shift_jis"); opts.ArchiveEncoding.Default = System.Text.Encoding.UTF8; using (var zip = File.OpenWrite(filename)) using (var zipWriter = WriterFactory.Open(zip, ArchiveType.Zip, opts)) { ProgressOutFileName = SelectedFilePath; IArchive archive = ArchiveFactory.Open(SelectedFilePath); var entries = archive.Entries.Where(e => e.IsDirectory == false && ( Path.GetExtension(e.Key).Equals(".jpg") || Path.GetExtension(e.Key).Equals(".jpeg") || Path.GetExtension(e.Key).Equals(".png") || Path.GetExtension(e.Key).Equals(".bmp"))); var list = entries.ToList(); ProgressMax = list.Count; ProgressValue = 0; foreach (var item in entries.ToList()) { ProgressFileName = item.Key; var outStream = new MemoryStream(); #if IMAGE_RESIZER var instructions = new Instructions(); instructions.Format = "jpg"; if (IsResize) { instructions.Width = ImageWidth; instructions.Height = ImageHeight; instructions.Mode = FitMode.Max; } if (IsCompress) { if (IsGrayscale) { instructions.Grayscale = GrayscaleMode.Flat; // TODO: check mode } instructions.JpegSubsampling = JpegSubsamplingMode.Y4Cb2Cr0; instructions.JpegQuality = JpegQuality; } ImageBuilder.Current.Build(new ImageJob(item.OpenEntryStream(), outStream, instructions, false, true)); #endif #if IMAGE_SHARP using (Image image = Image.Load(item.OpenEntryStream())) { if (IsResize) { image.Mutate(x => x .Resize(new ResizeOptions { Mode = ResizeMode.Min, Size = new Size(ImageWidth, ImageHeight), }) ); } if (IsCompress) { if (IsGrayscale) { image.Mutate(x => x .Grayscale() ); } // Use ImageSharp if (false) { var enc = new SixLabors.ImageSharp.Formats.Jpeg.JpegEncoder(); enc.Quality = JpegQuality; enc.Subsample = SixLabors.ImageSharp.Formats.Jpeg.JpegSubsample.Ratio444; if (ImageFormat == ImgFmt.IMG_444) { enc.Subsample = SixLabors.ImageSharp.Formats.Jpeg.JpegSubsample.Ratio444; } else if (ImageFormat == ImgFmt.IMG_420) { enc.Subsample = SixLabors.ImageSharp.Formats.Jpeg.JpegSubsample.Ratio420; } image.SaveAsJpeg(outStream, enc); } // Use MozJpeg if (true) { var bmpenc = new SixLabors.ImageSharp.Formats.Bmp.BmpEncoder(); image.Save(outStream, bmpenc); outStream.Seek(0, SeekOrigin.Begin); var tjc = new MozJpegSharp.TJCompressor(); var b = new System.Drawing.Bitmap(outStream); //var compressed = tjc.Compress(b, MozJpegSharp.TJSubsamplingOption.Chrominance420, 75, MozJpegSharp.TJFlags.None); var compressed = tjc.Compress(b, MozJpegSharp.TJSubsamplingOption.Chrominance420, 30, MozJpegSharp.TJFlags.None); outStream = new MemoryStream(compressed); } } else { image.SaveAsJpeg(outStream); } } #endif outStream.Seek(0, SeekOrigin.Begin); zipWriter.Write(item.Key, outStream); ProgressValue++; } } IsEnableProgressClose = true; return(1); }); }