public Image <TPixel> Decode <TPixel>(Configuration configuration, Stream stream, CancellationToken token) where TPixel : unmanaged, IPixel <TPixel> { using (Stream bmpStream = DibToBmpStream(stream)) { return(decoder.Decode <TPixel>(configuration, bmpStream, token)); } }
public static void SaveToJpeg(Stream image, string destination) { if (image == null) { return; } image.Position = 0; var bmpDecoder = new BmpDecoder(); var img = bmpDecoder.Decode(Configuration.Default, image); if (img == null) { return; } var width = (int)(img.Width * 0.5D); var height = (int)(img.Height * 0.5D); img.Mutate(context => context.Resize(new ResizeOptions { Mode = ResizeMode.Max, Size = new Size(width, height) })); using var ms = new MemoryStream(); img.Save(ms, JpegFormat.Instance); img.Dispose(); File.WriteAllBytes(destination, ms.ToArray()); }
public void Decode_VerifyRatio(string imagePath, int xResolution, int yResolution, PixelResolutionUnit resolutionUnit) { var testFile = TestFile.Create(imagePath); using (var stream = new MemoryStream(testFile.Bytes, false)) { var decoder = new BmpDecoder(); using (Image <Rgba32> image = decoder.Decode <Rgba32>(Configuration.Default, stream)) { ImageMetadata meta = image.Metadata; Assert.Equal(xResolution, meta.HorizontalResolution); Assert.Equal(yResolution, meta.VerticalResolution); Assert.Equal(resolutionUnit, meta.ResolutionUnits); } } }
public static ImageResult FromStream(Stream stream, ColorComponents?requiredComponents = null, bool use8BitsPerChannel = true) { ImageResult result = null; if (JpgDecoder.Test(stream)) { result = JpgDecoder.Decode(stream, requiredComponents); } else if (PngDecoder.Test(stream)) { result = PngDecoder.Decode(stream, requiredComponents); } else if (BmpDecoder.Test(stream)) { result = BmpDecoder.Decode(stream, requiredComponents); } else if (GifDecoder.Test(stream)) { result = GifDecoder.Decode(stream, requiredComponents); } else if (PsdDecoder.Test(stream)) { result = PsdDecoder.Decode(stream, requiredComponents); } else if (TgaDecoder.Test(stream)) { result = TgaDecoder.Decode(stream, requiredComponents); } if (result == null) { Decoder.stbi__err("unknown image type"); } if (use8BitsPerChannel && result.BitsPerChannel != 8) { result.Data = Conversion.stbi__convert_16_to_8(result.Data, result.Width, result.Height, (int)result.ColorComponents); } return(result); }