public void SimpleCheckerboardWithArbitraryTextData() { var builder = PngBuilder.Create(2, 2, false); builder.SetPixel(new Pixel(255, 0, 12), 0, 0); builder.SetPixel(255, 0, 12, 1, 1); builder.StoreText("Title", "Checkerboard"); builder.StoreText("another-data", "bərd that's good and other\r\nstuff"); using (var memory = new MemoryStream()) { builder.Save(memory); memory.Seek(0, SeekOrigin.Begin); var visitor = new MyChunkVisitor(); var read = Png.Open(memory, visitor); Assert.NotNull(read); var textChunks = visitor.Visited.Where(x => x.header.Name == "iTXt").ToList(); Assert.Equal(2, textChunks.Count); } }
public void SimpleCheckerboard() { var builder = PngBuilder.Create(2, 2, false); var red = new Pixel(255, 0, 12); var black = new Pixel(0, 0, 0, 255, false); builder.SetPixel(new Pixel(255, 0, 12), 0, 0); builder.SetPixel(255, 0, 12, 1, 1); using (var memory = new MemoryStream()) { builder.Save(memory); memory.Seek(0, SeekOrigin.Begin); var read = Png.Open(memory); var left = read.GetPixel(0, 0); Assert.Equal(red, left); var right = read.GetPixel(1, 0); Assert.Equal(black, right); var bottomLeft = read.GetPixel(0, 1); Assert.Equal(black, bottomLeft); var bottomRight = read.GetPixel(1, 1); Assert.Equal(red, bottomRight); } }
public void BuildMapFromFrdFileNewHiRez() { PngBuilder pngBuilder = new PngBuilder(BasePath, BLOCK_SIZE, BLOCK_SIZE); string fn = "CurRhombus5_2"; pngBuilder.Build(fn, true); }
public void BuildMapFromFrdFileNew() { PngBuilder pngBuilder = new PngBuilder(BasePath, BLOCK_SIZE, BLOCK_SIZE); //string fn = "MandlebrodtMapInfo (1)"; //string fn = "Circus1"; //string fn = "CRhomCenter2"; string fn = "SCluster2"; pngBuilder.Build(fn, false); }
public void CanCompressImageUsingPalette() { var rawBytes = File.ReadAllBytes(GetImageFile("10by9pixelsrgb8bpp.png")); var png = Png.Open(rawBytes); var builder = PngBuilder.FromPng(png); var compressed = builder.Save(SaveCompressed); Assert.True(compressed.Length < rawBytes.Length, $"Compressed size {compressed.Length} bytes was not smaller than raw size {rawBytes.Length}."); }
/// <summary> /// Creates a black & white PNG of the QR code, using 1-bit grayscale. /// </summary> public byte[] GetGraphic(int pixelsPerModule) { using (var png = new PngBuilder()) { var size = QrCodeData.ModuleMatrix.Count * pixelsPerModule; png.WriteHeader(size, size, 1, PngBuilder.ColorType.Greyscale); png.WriteScanlines(DrawScanlines(pixelsPerModule)); png.WriteEnd(); return(png.GetBytes()); } }
private static void CopyPngToBuilder(Png png, PngBuilder builder) { for (int y = 0; y < png.Height; y++) { for (int x = 0; x < png.Width; x++) { var pixel = png.GetPixel(x, y); builder.SetPixel(pixel, x, y); } } }
/// <summary> /// Creates a black & white PNG of the QR code, using 1-bit grayscale. /// </summary> public byte[] GetGraphic(int pixelsPerModule, bool drawQuietZones = true) { using (var png = new PngBuilder()) { var size = (this.QrCodeData.ModuleMatrix.Count - (drawQuietZones ? 0 : 8)) * pixelsPerModule; png.WriteHeader(size, size, 1, PngBuilder.ColorType.Greyscale); png.WriteScanlines(this.DrawScanlines(pixelsPerModule, drawQuietZones)); png.WriteEnd(); return(png.GetBytes()); } }
/// <summary> /// Creates 2-color PNG of the QR code, using 1-bit indexed color. Accepts 3-byte RGB colors for normal images and 4-byte RGBA-colors for transparent images. /// </summary> public byte[] GetGraphic(int pixelsPerModule, byte[] darkColorRgba, byte[] lightColorRgba) { using (var png = new PngBuilder()) { var size = this.m_xCodeData.ModuleMatrix.Count * pixelsPerModule; png.WriteHeader(size, size, 1, PngBuilder.ColorType.Indexed); png.WritePalette(darkColorRgba, lightColorRgba); png.WriteScanlines(this.DrawScanlines(pixelsPerModule)); png.WriteEnd(); return(png.GetBytes()); } }
public byte[] GetBytes() { using (var png = new PngBuilder()) { var data = Draw(); png.WriteHeader(scaledSize, scaledSize, 1, 0); png.WriteData(data); png.WriteEnd(); return(png.GetBytes()); } }
public override void Init(MemoryStream imageStream) { this.imageStream = imageStream; readOnlyInstance = Png.Open(this.imageStream); writableInstance = PngBuilder.Create(readOnlyInstance.Width, readOnlyInstance.Height, readOnlyInstance.HasAlphaChannel); for (var y = 0; y < readOnlyInstance.Height; y++) { for (var x = 0; x < readOnlyInstance.Width; x++) { writableInstance.SetPixel(readOnlyInstance.GetPixel(x, y), x, y); } } }
public void CanCompressImageWithAlphaChannel() { var file = GetImageFile("pdfpig.png"); var png = Png.Open(file); var builder = PngBuilder.Create(png.Width, png.Height, png.HasAlphaChannel); CopyPngToBuilder(png, builder); var sizeRaw = builder.Save().Length; var compressed = builder.Save(SaveCompressed); File.WriteAllBytes(@"C:\temp\mycompressed.png", compressed); Assert.True(compressed.Length < sizeRaw, $"Compressed size {compressed.Length} bytes was not smaller than raw size {sizeRaw}."); }
public Stream ToPng() { var stream = new MemoryStream(); var builder = PngBuilder.Create(Width, Height, false); for (int y = 0; y < Height; ++y) { for (int x = 0; x < Width; ++x) { var p = (Width * y + x) * 4; builder.SetPixel(new BigGustave.Pixel(Bytes[p], Bytes[p + 1], Bytes[p + 2], Bytes[p + 3], false), x, y); } } builder.Save(stream); stream.Seek(0, SeekOrigin.Begin); return(stream); }
public void BiggerImage() { var builder = PngBuilder.Create(10, 10, false); var green = new Pixel(0, 255, 25, 255, false); var color1 = new Pixel(60, 201, 32, 255, false); var color2 = new Pixel(100, 5, 250, 255, false); builder.SetPixel(green, 1, 1).SetPixel(green, 2, 1).SetPixel(green, 3, 1).SetPixel(green, 4, 1).SetPixel(green, 5, 1); builder.SetPixel(color1, 5, 7).SetPixel(color1, 5, 8) .SetPixel(color1, 6, 7).SetPixel(color1, 6, 8) .SetPixel(color1, 7, 7).SetPixel(color1, 7, 8); builder.SetPixel(color2, 9, 9).SetPixel(color2, 8, 8); using (var memoryStream = new MemoryStream()) { builder.Save(memoryStream); } }