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