public void CanGeneratePngFromCalRGBImageData() { var decodedBytes = ImageHelpers.LoadFileBytes("calrgb-decoded.bin"); var image = new TestPdfImage { ColorSpaceDetails = new CalRGBColorSpaceDetails( whitePoint: new List <decimal> { 0.95043m, 1, 1.09m }, blackPoint: null, gamma: new List <decimal> { 2.2m, 2.2m, 2.2m }, matrix: new List <decimal> { 0.41239m, 0.21264m, 0.01933m, 0.35758m, 0.71517m, 0.11919m, 0.18045m, 0.07218m, 0.9504m }), DecodedBytes = decodedBytes, WidthInSamples = 153, HeightInSamples = 83, BitsPerComponent = 8 }; Assert.True(PngFromPdfImageFactory.TryGenerate(image, out var bytes)); Assert.True(ImageHelpers.ImagesAreEqual(LoadImage("calrgb.png"), bytes)); }
public void AlternateColorSpaceDetailsIsCurrentlyUsedInPdfPigWhenGeneratingPngsFromICCBasedImageData() { var decodedBytes = ImageHelpers.LoadFileBytes("iccbased-decoded.bin"); var iccBasedImage = new TestPdfImage { ColorSpaceDetails = new ICCBasedColorSpaceDetails( numberOfColorComponents: 3, alternateColorSpaceDetails: DeviceRgbColorSpaceDetails.Instance, range: new List <decimal> { 0, 1, 0, 1, 0, 1 }, metadata: null), DecodedBytes = decodedBytes, WidthInSamples = 1, HeightInSamples = 1, BitsPerComponent = 8 }; var deviceRGBImage = new TestPdfImage { ColorSpaceDetails = DeviceRgbColorSpaceDetails.Instance, DecodedBytes = decodedBytes, WidthInSamples = 1, HeightInSamples = 1, BitsPerComponent = 8 }; Assert.True(PngFromPdfImageFactory.TryGenerate(iccBasedImage, out var iccPngBytes)); Assert.True(PngFromPdfImageFactory.TryGenerate(deviceRGBImage, out var deviceRgbBytes)); Assert.Equal(iccPngBytes, deviceRgbBytes); }
public void CanGeneratePngFromCcittFaxDecodedImageData() { var decodedBytes = ImageHelpers.LoadFileBytes("ccittfax-decoded.bin"); var image = new TestPdfImage { ColorSpaceDetails = IndexedColorSpaceDetails.Stencil(DeviceGrayColorSpaceDetails.Instance, new[] { 1m, 0 }), DecodedBytes = decodedBytes, WidthInSamples = 1800, HeightInSamples = 3113, BitsPerComponent = 1 }; Assert.True(PngFromPdfImageFactory.TryGenerate(image, out var bytes)); Assert.True(ImageHelpers.ImagesAreEqual(LoadImage("ccittfax.png"), bytes)); }
public void CanGeneratePngFromIndexedImageData8bpc() { var indices = new byte[] { 1, 0, 1, 0, 1, 0, 1, 0, 1 }; var image = new TestPdfImage { ColorSpaceDetails = new IndexedColorSpaceDetails(DeviceRgbColorSpaceDetails.Instance, 1, RgbPalette.SelectMany(b => b).ToArray()), DecodedBytes = indices, WidthInSamples = 3, HeightInSamples = 3 }; Assert.True(PngFromPdfImageFactory.TryGenerate(image, out var bytes)); Assert.True(ImageHelpers.ImagesAreEqual(LoadImage("3x3.png"), bytes)); }
public void CanGeneratePngFromDeviceGrayscaleImageData() { var pixels = new[] { GrayscaleWhite, GrayscaleBlack, GrayscaleWhite, GrayscaleBlack, GrayscaleWhite, GrayscaleBlack, GrayscaleWhite, GrayscaleBlack, GrayscaleWhite }; var image = new TestPdfImage { ColorSpaceDetails = DeviceGrayColorSpaceDetails.Instance, DecodedBytes = pixels, WidthInSamples = 3, HeightInSamples = 3 }; Assert.True(PngFromPdfImageFactory.TryGenerate(image, out var bytes)); Assert.True(ImageHelpers.ImagesAreEqual(LoadImage("3x3.png"), bytes)); }
public void CanGeneratePngFromDeviceCMYKImageData() { var pixels = new[] { CmykWhite, CmykBlack, CmykWhite, CmykBlack, CmykWhite, CmykBlack, CmykWhite, CmykBlack, CmykWhite }; var image = new TestPdfImage { ColorSpaceDetails = DeviceCmykColorSpaceDetails.Instance, DecodedBytes = pixels.SelectMany(b => b).ToArray(), WidthInSamples = 3, HeightInSamples = 3 }; Assert.True(PngFromPdfImageFactory.TryGenerate(image, out var bytes)); Assert.True(ImageHelpers.ImagesAreEqual(LoadImage("3x3.png"), bytes)); }
public void CanGeneratePngFromCalGrayImageData() { var decodedBytes = ImageHelpers.LoadFileBytes("calgray-decoded.bin", isCompressed: true); var image = new TestPdfImage { ColorSpaceDetails = new CalGrayColorSpaceDetails( whitePoint: new List <decimal> { 0.9505000114m, 1, 1.0889999866m }, blackPoint: null, gamma: 2.2000000477m), DecodedBytes = decodedBytes, WidthInSamples = 2480, HeightInSamples = 1748, BitsPerComponent = 8, }; Assert.True(PngFromPdfImageFactory.TryGenerate(image, out var bytes)); Assert.True(ImageHelpers.ImagesAreEqual(LoadImage("calgray.png"), bytes)); }
public void CanGeneratePngFromICCBasedImageData() { var decodedBytes = ImageHelpers.LoadFileBytes("iccbased-decoded.bin"); var image = new TestPdfImage { ColorSpaceDetails = new ICCBasedColorSpaceDetails( numberOfColorComponents: 3, alternateColorSpaceDetails: DeviceRgbColorSpaceDetails.Instance, range: new List <decimal> { 0, 1, 0, 1, 0, 1 }, metadata: null), DecodedBytes = decodedBytes, WidthInSamples = 1, HeightInSamples = 1, BitsPerComponent = 8 }; Assert.True(PngFromPdfImageFactory.TryGenerate(image, out var bytes)); Assert.True(ImageHelpers.ImagesAreEqual(LoadImage("iccbased.png"), bytes)); }
public void CanGeneratePngFromIndexedImageData1bpc() { // Indices for a 3x3 RGB image, each index is represented by a single bit // 1, 0, 1, // 0, 1, 0, // 1, 0, 1 // // A scanline must be at least one byte wide, so the remaining five bits are padding: // Byte 0: 10100000 (bits #7 and #5 are 1) // Byte 1: 01000000 (bit #6 is 1) // Byte 2: 10100000 (bits #7 and #5 are 1) // |||||||| // Bit # : 76543210 var lines = new byte[3]; lines[0] |= (1 << 7); // Set bit #7 to 1 lines[0] |= (1 << 5); // Set bit #5 to 1 lines[1] |= (1 << 6); // Set bit #6 to 1 lines[2] |= (1 << 7); // Set bit #7 to 1 lines[2] |= (1 << 5); // Set bit #5 to 1 var colorTable = RgbPalette.SelectMany(b => b).ToArray(); var image = new TestPdfImage { ColorSpaceDetails = new IndexedColorSpaceDetails(DeviceRgbColorSpaceDetails.Instance, 1, colorTable), DecodedBytes = lines, WidthInSamples = 3, HeightInSamples = 3, BitsPerComponent = 1 }; Assert.True(PngFromPdfImageFactory.TryGenerate(image, out var bytes)); Assert.True(ImageHelpers.ImagesAreEqual(LoadImage("3x3.png"), bytes)); }
/// <inheritdoc /> public bool TryGetPng(out byte[] bytes) => PngFromPdfImageFactory.TryGenerate(this, out bytes);