Esempio n. 1
0
        public void ValidOneTimesOne16Bit()
        {
            const string bodyString = "P3\n1 1 65535\n4660 22136 39612";
            var          bodyBytes  = UsAsciiEncoding.GetBytes(bodyString);

            var           factory = new ImageFactories.Image16Factory();
            var           reader  = new NetpbmReader();
            NetpbmImage16 image;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                image = (NetpbmImage16)reader.ReadImage(bodyStream, factory);
                image.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(1, image.Header.Width);
            Assert.Equal(1, image.Header.Height);
            Assert.Equal(65535, image.Header.HighestComponentValue);
            Assert.Equal(3, image.Header.Components.Count);
            Assert.Equal(Component.Red, image.Header.Components[0]);
            Assert.Equal(Component.Green, image.Header.Components[1]);
            Assert.Equal(Component.Blue, image.Header.Components[2]);
            Assert.Equal(0x1234, image.GetNativePixel(0, 0)[0]);
            Assert.Equal(0x5678, image.GetNativePixel(0, 0)[1]);
            Assert.Equal(0x9ABC, image.GetNativePixel(0, 0)[2]);
        }
Esempio n. 2
0
        public void SixTimesSixGradientValueOutOfRange()
        {
            var bodyRawBytes = new object[]
            {
                'P', '6',
                '\n',
                '6', ' ', '6', ' ', '2', '5', '4', '\n',
                255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0, 0, 0, 0,
                0, 255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0, 0, 0,
                0, 0, 255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0, 0,
                255, 255, 0, 204, 204, 0, 153, 153, 0, 102, 102, 0, 51, 51, 0, 0, 0, 0,
                255, 0, 255, 204, 0, 204, 153, 0, 153, 102, 0, 102, 51, 0, 51, 0, 0, 0,
                0, 255, 255, 0, 204, 204, 0, 153, 153, 0, 102, 102, 0, 51, 51, 0, 0, 0
            };
            var bodyBytes = bodyRawBytes.Select(Convert.ToByte).ToArray();

            var factory = new ImageFactories.Image8Factory();
            var reader  = new NetpbmReader();

            Assert.Throws <InvalidDataException>(() =>
            {
                using (var bodyStream = new MemoryStream(bodyBytes, false))
                {
                    var image = reader.ReadImage(bodyStream, factory);
                    image.LoadData();
                }
            });
        }
Esempio n. 3
0
        public void ValidOneTimesOne16Bit()
        {
            var bodyRawBytes = new object[]
            {
                'P', '6',
                '\n',
                '1', ' ', '1', ' ', '6', '5', '5', '3', '5', '\n',
                0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC
            };
            var bodyBytes = bodyRawBytes.Select(Convert.ToByte).ToArray();

            var           factory = new ImageFactories.Image16Factory();
            var           reader  = new NetpbmReader();
            NetpbmImage16 image;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                image = (NetpbmImage16)reader.ReadImage(bodyStream, factory);
                image.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(1, image.Header.Width);
            Assert.Equal(1, image.Header.Height);
            Assert.Equal(65535, image.Header.HighestComponentValue);
            Assert.Equal(3, image.Header.Components.Count);
            Assert.Equal(Component.Red, image.Header.Components[0]);
            Assert.Equal(Component.Green, image.Header.Components[1]);
            Assert.Equal(Component.Blue, image.Header.Components[2]);
            Assert.Equal(0x1234, image.GetNativePixel(0, 0)[0]);
            Assert.Equal(0x5678, image.GetNativePixel(0, 0)[1]);
            Assert.Equal(0x9ABC, image.GetNativePixel(0, 0)[2]);
        }
Esempio n. 4
0
        public void ValidTwoTimesTwoWithCommentGauntlet()
        {
            var bodyRawBytes = new object[]
            {
                'P', '5',
                '\n',
                '0', '#', 'o', 'm', 'g', '\n', '2', ' ', '2', ' ', '#', 'l', 'o', 'l', '\n', '#', ' ', 'r', 'o', 'f', 'l', '\n', '1', '\n',
                0x00, 0x01,
                0x01, 0x00
            };
            var bodyBytes = bodyRawBytes.Select(Convert.ToByte).ToArray();

            var          factory = new ImageFactories.Image8Factory();
            var          reader  = new NetpbmReader();
            NetpbmImage8 image;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                image = (NetpbmImage8)reader.ReadImage(bodyStream, factory);
                image.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(2, image.Header.Width);
            Assert.Equal(2, image.Header.Height);
            Assert.Equal(1, image.Header.HighestComponentValue);
            Assert.Equal(1, image.Header.Components.Count);
            Assert.Equal(Component.White, image.Header.Components[0]);
            Assert.Equal(0, image.GetNativePixel(0, 0)[0]);
            Assert.Equal(1, image.GetNativePixel(1, 0)[0]);
            Assert.Equal(1, image.GetNativePixel(0, 1)[0]);
            Assert.Equal(0, image.GetNativePixel(1, 1)[0]);
        }
Esempio n. 5
0
        public void ValidSixTimesSixGradient()
        {
            var          referenceRow = new byte[] { 255, 204, 153, 102, 51, 0 };
            const string bodyString   = "P2\n6 6 255\n255 204 153 102 51 0\n255 204 153 102 51 0\n255 204 153 102 51 0\n255 204 153 102 51 0\n255 204 153 102 51 0\n255 204 153 102 51 0";
            var          bodyBytes    = UsAsciiEncoding.GetBytes(bodyString);

            var          factory = new ImageFactories.Image8Factory();
            var          reader  = new NetpbmReader();
            NetpbmImage8 image;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                image = (NetpbmImage8)reader.ReadImage(bodyStream, factory);
                image.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(6, image.Header.Width);
            Assert.Equal(6, image.Header.Height);
            Assert.Equal(255, image.Header.HighestComponentValue);
            Assert.Equal(1, image.Header.Components.Count);
            Assert.Equal(Component.White, image.Header.Components[0]);
            Assert.Equal((IEnumerable <byte>)referenceRow, (IEnumerable <byte>)image.LoadedNativeRows[0]);
            Assert.Equal((IEnumerable <byte>)referenceRow, (IEnumerable <byte>)image.LoadedNativeRows[1]);
            Assert.Equal((IEnumerable <byte>)referenceRow, (IEnumerable <byte>)image.LoadedNativeRows[2]);
            Assert.Equal((IEnumerable <byte>)referenceRow, (IEnumerable <byte>)image.LoadedNativeRows[3]);
            Assert.Equal((IEnumerable <byte>)referenceRow, (IEnumerable <byte>)image.LoadedNativeRows[4]);
            Assert.Equal((IEnumerable <byte>)referenceRow, (IEnumerable <byte>)image.LoadedNativeRows[5]);
        }
Esempio n. 6
0
        public void ValidThreeTimesTwoLotsOfWhitespace()
        {
            var bodyRawBytes = new object[]
            {
                'P', '4',
                ' ', '\n', ' ', ' ', ' ',
                '3', ' ', ' ', ' ', ' ', ' ', ' ', '2', ' ',
                0x60,
                0x80
            };
            var bodyBytes = bodyRawBytes.Select(Convert.ToByte).ToArray();

            var          factory = new ImageFactories.Image8Factory();
            var          reader  = new NetpbmReader();
            NetpbmImage8 image;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                image = (NetpbmImage8)reader.ReadImage(bodyStream, factory);
                image.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(3, image.Header.Width);
            Assert.Equal(2, image.Header.Height);
            Assert.Equal(1, image.Header.HighestComponentValue);
            Assert.Equal(1, image.Header.Components.Count);
            Assert.Equal(Component.Black, image.Header.Components[0]);
            Assert.Equal(0, image.GetNativePixel(0, 0)[0]);
            Assert.Equal(1, image.GetNativePixel(1, 0)[0]);
            Assert.Equal(1, image.GetNativePixel(2, 0)[0]);
            Assert.Equal(1, image.GetNativePixel(0, 1)[0]);
            Assert.Equal(0, image.GetNativePixel(1, 1)[0]);
            Assert.Equal(0, image.GetNativePixel(2, 1)[0]);
        }
Esempio n. 7
0
        public void ValidThreeTimesTwoLotsOfWhitespace()
        {
            const string bodyString = "P2 \n   3      2  1 \n 0   1  1  \t  1    0  0";
            var          bodyBytes  = UsAsciiEncoding.GetBytes(bodyString);

            var          factory = new ImageFactories.Image8Factory();
            var          reader  = new NetpbmReader();
            NetpbmImage8 image;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                image = (NetpbmImage8)reader.ReadImage(bodyStream, factory);
                image.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(3, image.Header.Width);
            Assert.Equal(2, image.Header.Height);
            Assert.Equal(1, image.Header.HighestComponentValue);
            Assert.Equal(1, image.Header.Components.Count);
            Assert.Equal(Component.White, image.Header.Components[0]);
            Assert.Equal(0, image.GetNativePixel(0, 0)[0]);
            Assert.Equal(1, image.GetNativePixel(1, 0)[0]);
            Assert.Equal(1, image.GetNativePixel(2, 0)[0]);
            Assert.Equal(1, image.GetNativePixel(0, 1)[0]);
            Assert.Equal(0, image.GetNativePixel(1, 1)[0]);
            Assert.Equal(0, image.GetNativePixel(2, 1)[0]);
        }
Esempio n. 8
0
        public void TwoImagesTwoTimesTwo()
        {
            var bodyRawBytes = new object[]
            {
                'P', '4',
                '\n',
                '2', ' ', '2', '\n',
                0x40,
                0x80,
                'P', '4',
                '\n',
                '2', ' ', '2', '\n',
                0xC0,
                0x00
            };
            var bodyBytes = bodyRawBytes.Select(Convert.ToByte).ToArray();

            var          factory = new ImageFactories.Image8Factory();
            var          reader  = new NetpbmReader();
            NetpbmImage8 firstImage;
            NetpbmImage8 secondImage;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                firstImage = (NetpbmImage8)reader.ReadImage(bodyStream, factory);
                firstImage.LoadData();
                secondImage = (NetpbmImage8)reader.ReadImage(bodyStream, factory);
                secondImage.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(2, firstImage.Header.Width);
            Assert.Equal(2, firstImage.Header.Height);
            Assert.Equal(1, firstImage.Header.HighestComponentValue);
            Assert.Equal(1, firstImage.Header.Components.Count);
            Assert.Equal(Component.Black, firstImage.Header.Components[0]);
            Assert.Equal(0, firstImage.GetNativePixel(0, 0)[0]);
            Assert.Equal(1, firstImage.GetNativePixel(1, 0)[0]);
            Assert.Equal(1, firstImage.GetNativePixel(0, 1)[0]);
            Assert.Equal(0, firstImage.GetNativePixel(1, 1)[0]);

            Assert.Equal(2, secondImage.Header.Width);
            Assert.Equal(2, secondImage.Header.Height);
            Assert.Equal(1, secondImage.Header.HighestComponentValue);
            Assert.Equal(1, secondImage.Header.Components.Count);
            Assert.Equal(Component.Black, secondImage.Header.Components[0]);
            Assert.Equal(1, secondImage.GetNativePixel(0, 0)[0]);
            Assert.Equal(1, secondImage.GetNativePixel(1, 0)[0]);
            Assert.Equal(0, secondImage.GetNativePixel(0, 1)[0]);
            Assert.Equal(0, secondImage.GetNativePixel(1, 1)[0]);
        }
        private static void Verify(string content, int formatType, int width, int height, int?maxVal)
        {
            var stream    = new MemoryStream(Encoding.UTF8.GetBytes(content));
            var directory = new NetpbmReader().Extract(stream);

            Assert.Equal(formatType, directory.GetInt32(NetpbmHeaderDirectory.TagFormatType));
            Assert.Equal(width, directory.GetInt32(NetpbmHeaderDirectory.TagWidth));
            Assert.Equal(height, directory.GetInt32(NetpbmHeaderDirectory.TagHeight));

            if (maxVal != null)
            {
                Assert.Equal(maxVal, directory.GetInt32(NetpbmHeaderDirectory.TagMaximumValue));
            }
        }
Esempio n. 10
0
        public void ValidSixTimesSixGradient()
        {
            var referenceRows = new[]
            {
                new byte[] { 255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0, 0, 0, 0 },
                new byte[] { 0, 255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0, 0, 0 },
                new byte[] { 0, 0, 255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0, 0 },
                new byte[] { 255, 255, 0, 204, 204, 0, 153, 153, 0, 102, 102, 0, 51, 51, 0, 0, 0, 0 },
                new byte[] { 255, 0, 255, 204, 0, 204, 153, 0, 153, 102, 0, 102, 51, 0, 51, 0, 0, 0 },
                new byte[] { 0, 255, 255, 0, 204, 204, 0, 153, 153, 0, 102, 102, 0, 51, 51, 0, 0, 0 }
            };
            var bodyRawBytes = new object[]
            {
                'P', '6',
                '\n',
                '6', ' ', '6', ' ', '2', '5', '5', '\n',
                255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0, 0, 0, 0,
                0, 255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0, 0, 0,
                0, 0, 255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0, 0,
                255, 255, 0, 204, 204, 0, 153, 153, 0, 102, 102, 0, 51, 51, 0, 0, 0, 0,
                255, 0, 255, 204, 0, 204, 153, 0, 153, 102, 0, 102, 51, 0, 51, 0, 0, 0,
                0, 255, 255, 0, 204, 204, 0, 153, 153, 0, 102, 102, 0, 51, 51, 0, 0, 0
            };
            var bodyBytes = bodyRawBytes.Select(Convert.ToByte).ToArray();

            var          factory = new ImageFactories.Image8Factory();
            var          reader  = new NetpbmReader();
            NetpbmImage8 image;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                image = (NetpbmImage8)reader.ReadImage(bodyStream, factory);
                image.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(6, image.Header.Width);
            Assert.Equal(6, image.Header.Height);
            Assert.Equal(255, image.Header.HighestComponentValue);
            Assert.Equal(3, image.Header.Components.Count);
            Assert.Equal(Component.Red, image.Header.Components[0]);
            Assert.Equal(Component.Green, image.Header.Components[1]);
            Assert.Equal(Component.Blue, image.Header.Components[2]);
            Assert.Equal((IEnumerable <byte>)referenceRows[0], (IEnumerable <byte>)image.LoadedNativeRows[0]);
            Assert.Equal((IEnumerable <byte>)referenceRows[1], (IEnumerable <byte>)image.LoadedNativeRows[1]);
            Assert.Equal((IEnumerable <byte>)referenceRows[2], (IEnumerable <byte>)image.LoadedNativeRows[2]);
            Assert.Equal((IEnumerable <byte>)referenceRows[3], (IEnumerable <byte>)image.LoadedNativeRows[3]);
            Assert.Equal((IEnumerable <byte>)referenceRows[4], (IEnumerable <byte>)image.LoadedNativeRows[4]);
            Assert.Equal((IEnumerable <byte>)referenceRows[5], (IEnumerable <byte>)image.LoadedNativeRows[5]);
        }
Esempio n. 11
0
        public void SixTimesSixGradientValueOutOfRange()
        {
            const string bodyString = "P2\n6 6 254\n255 204 153 102 51 0\n255 204 153 102 51 0\n255 204 153 102 51 0\n255 204 153 102 51 0\n255 204 153 102 51 0\n255 204 153 102 51 0";
            var          bodyBytes  = UsAsciiEncoding.GetBytes(bodyString);

            var factory = new ImageFactories.Image8Factory();
            var reader  = new NetpbmReader();

            Assert.Throws <InvalidDataException>(() =>
            {
                using (var bodyStream = new MemoryStream(bodyBytes, false))
                {
                    var image = reader.ReadImage(bodyStream, factory);
                    image.LoadData();
                }
            });
        }
Esempio n. 12
0
        public void TwoTimesTwoValueBlatantlyOutOfRange()
        {
            const string bodyString = "P2\n2 2 1\n0 36893488147419103232 1 0";
            var          bodyBytes  = UsAsciiEncoding.GetBytes(bodyString);

            var factory = new ImageFactories.Image8Factory();
            var reader  = new NetpbmReader();

            Assert.Throws <InvalidDataException>(() =>
            {
                using (var bodyStream = new MemoryStream(bodyBytes, false))
                {
                    var image = reader.ReadImage(bodyStream, factory);
                    image.LoadData();
                }
            });
        }
Esempio n. 13
0
        public void TwoTimesTwoTooFewPixels()
        {
            const string bodyString = "P2\n2 2 1\n0 0 1";
            var          bodyBytes  = UsAsciiEncoding.GetBytes(bodyString);

            var factory = new ImageFactories.Image8Factory();
            var reader  = new NetpbmReader();

            Assert.Throws <EndOfStreamException>(() =>
            {
                using (var bodyStream = new MemoryStream(bodyBytes, false))
                {
                    var image = reader.ReadImage(bodyStream, factory);
                    image.LoadData();
                }
            });
        }
Esempio n. 14
0
        public void ValidSixTimesSixGrayscale()
        {
            var referenceRow = new byte[] { 255, 204, 153, 102, 51, 0 };
            var bodyRawBytes = new object[]
            {
                'P', '7',
                '\n',
                'W', 'I', 'D', 'T', 'H', ' ', '6', '\n',
                'H', 'E', 'I', 'G', 'H', 'T', ' ', '6', '\n',
                'D', 'E', 'P', 'T', 'H', ' ', '1', '\n',
                'M', 'A', 'X', 'V', 'A', 'L', ' ', '2', '5', '5', '\n',
                'T', 'U', 'P', 'L', 'T', 'Y', 'P', 'E', ' ', 'G', 'R', 'A', 'Y', 'S', 'C', 'A', 'L', 'E', '\n',
                'E', 'N', 'D', 'H', 'D', 'R', '\n',
                255, 204, 153, 102, 51, 0,
                255, 204, 153, 102, 51, 0,
                255, 204, 153, 102, 51, 0,
                255, 204, 153, 102, 51, 0,
                255, 204, 153, 102, 51, 0,
                255, 204, 153, 102, 51, 0
            };
            var bodyBytes = bodyRawBytes.Select(Convert.ToByte).ToArray();

            var          factory = new ImageFactories.Image8Factory();
            var          reader  = new NetpbmReader();
            NetpbmImage8 image;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                image = (NetpbmImage8)reader.ReadImage(bodyStream, factory);
                image.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(6, image.Header.Width);
            Assert.Equal(6, image.Header.Height);
            Assert.Equal(255, image.Header.HighestComponentValue);
            Assert.Equal(1, image.Header.Components.Count);
            Assert.Equal(Component.White, image.Header.Components[0]);
            Assert.Equal((IEnumerable <byte>)referenceRow, (IEnumerable <byte>)image.LoadedNativeRows[0]);
            Assert.Equal((IEnumerable <byte>)referenceRow, (IEnumerable <byte>)image.LoadedNativeRows[1]);
            Assert.Equal((IEnumerable <byte>)referenceRow, (IEnumerable <byte>)image.LoadedNativeRows[2]);
            Assert.Equal((IEnumerable <byte>)referenceRow, (IEnumerable <byte>)image.LoadedNativeRows[3]);
            Assert.Equal((IEnumerable <byte>)referenceRow, (IEnumerable <byte>)image.LoadedNativeRows[4]);
            Assert.Equal((IEnumerable <byte>)referenceRow, (IEnumerable <byte>)image.LoadedNativeRows[5]);
        }
Esempio n. 15
0
        public void ValidThreeTimesThreeLotsOfWhitespace()
        {
            var redRow       = new byte[] { 1, 0, 0 };
            var greenRow     = new byte[] { 0, 1, 0 };
            var blueRow      = new byte[] { 0, 0, 1 };
            var bodyRawBytes = new object[]
            {
                'P', '6',
                ' ', '\n', ' ', ' ', ' ',
                '3', ' ', ' ', ' ', ' ', ' ', ' ', '3', ' ', ' ', '1', ' ',
                0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00,
                0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00,
                0x00, 0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01
            };
            var bodyBytes = bodyRawBytes.Select(Convert.ToByte).ToArray();

            var          factory = new ImageFactories.Image8Factory();
            var          reader  = new NetpbmReader();
            NetpbmImage8 image;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                image = (NetpbmImage8)reader.ReadImage(bodyStream, factory);
                image.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(3, image.Header.Width);
            Assert.Equal(3, image.Header.Height);
            Assert.Equal(1, image.Header.HighestComponentValue);
            Assert.Equal(3, image.Header.Components.Count);
            Assert.Equal(Component.Red, image.Header.Components[0]);
            Assert.Equal(Component.Green, image.Header.Components[1]);
            Assert.Equal(Component.Blue, image.Header.Components[2]);
            Assert.Equal((IEnumerable <byte>)redRow, (IEnumerable <byte>)image.GetNativePixel(0, 0));
            Assert.Equal((IEnumerable <byte>)redRow, (IEnumerable <byte>)image.GetNativePixel(1, 0));
            Assert.Equal((IEnumerable <byte>)redRow, (IEnumerable <byte>)image.GetNativePixel(2, 0));
            Assert.Equal((IEnumerable <byte>)greenRow, (IEnumerable <byte>)image.GetNativePixel(0, 1));
            Assert.Equal((IEnumerable <byte>)greenRow, (IEnumerable <byte>)image.GetNativePixel(1, 1));
            Assert.Equal((IEnumerable <byte>)greenRow, (IEnumerable <byte>)image.GetNativePixel(2, 1));
            Assert.Equal((IEnumerable <byte>)blueRow, (IEnumerable <byte>)image.GetNativePixel(0, 2));
            Assert.Equal((IEnumerable <byte>)blueRow, (IEnumerable <byte>)image.GetNativePixel(1, 2));
            Assert.Equal((IEnumerable <byte>)blueRow, (IEnumerable <byte>)image.GetNativePixel(2, 2));
        }
Esempio n. 16
0
        public void ValidTwoTimesTwoBitmapWithComments()
        {
            var bodyRawBytes = new object[]
            {
                'P', '7',
                '\n',
                '#', ' ', 't', 'w', 'o', ' ', 't', 'i', 'm', 'e', 's', ' ', 't', 'w', 'o', '\n',
                'W', 'I', 'D', 'T', 'H', ' ', '2', '\n',
                'H', 'E', 'I', 'G', 'H', 'T', ' ', '2', '\n',
                '#', ' ', 's', 'i', 'n', 'g', 'l', 'e', ' ', 'p', 'l', 'a', 'n', 'e', '\n',
                'D', 'E', 'P', 'T', 'H', ' ', '1', '\n',
                '#', ' ', 'b', 'i', 't', 'm', 'a', 'p', '\n',
                'M', 'A', 'X', 'V', 'A', 'L', ' ', '1', '\n',
                'T', 'U', 'P', 'L', 'T', 'Y', 'P', 'E', ' ', 'B', 'L', 'A', 'C', 'K', 'A', 'N', 'D', 'W', 'H', 'I', 'T', 'E', '\n',
                '#', ' ', 'd', 'o', 'n', 'e', '\n',
                'E', 'N', 'D', 'H', 'D', 'R', '\n',
                0x00, 0x01,
                0x01, 0x00
            };
            var bodyBytes = bodyRawBytes.Select(Convert.ToByte).ToArray();

            var          factory = new ImageFactories.Image8Factory();
            var          reader  = new NetpbmReader();
            NetpbmImage8 image;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                image = (NetpbmImage8)reader.ReadImage(bodyStream, factory);
                image.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(2, image.Header.Width);
            Assert.Equal(2, image.Header.Height);
            Assert.Equal(1, image.Header.HighestComponentValue);
            Assert.Equal(1, image.Header.Components.Count);
            Assert.Equal(Component.White, image.Header.Components[0]);
            Assert.Equal(0, image.GetNativePixel(0, 0)[0]);
            Assert.Equal(1, image.GetNativePixel(1, 0)[0]);
            Assert.Equal(1, image.GetNativePixel(0, 1)[0]);
            Assert.Equal(0, image.GetNativePixel(1, 1)[0]);
        }
Esempio n. 17
0
		public static bool TryParse32BitPbm(string path, out RawImage image)
		{
			try
			{
				var reader = new NetpbmReader();

				using (var stream = File.OpenRead(path))
				{
					var pbmImage = reader.ReadImage(stream, Image8Factory);

					image = pbmImage.ToRawImage();
				}

				return true;
			}
			catch
			{
				image = null;
				return false;
			}
		}
Esempio n. 18
0
        public void ValidSixTimesSixGradient()
        {
            var referenceRows = new[]
            {
                new byte[] { 255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0, 0, 0, 0 },
                new byte[] { 0, 255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0, 0, 0 },
                new byte[] { 0, 0, 255, 0, 0, 204, 0, 0, 153, 0, 0, 102, 0, 0, 51, 0, 0, 0 },
                new byte[] { 255, 255, 0, 204, 204, 0, 153, 153, 0, 102, 102, 0, 51, 51, 0, 0, 0, 0 },
                new byte[] { 255, 0, 255, 204, 0, 204, 153, 0, 153, 102, 0, 102, 51, 0, 51, 0, 0, 0 },
                new byte[] { 0, 255, 255, 0, 204, 204, 0, 153, 153, 0, 102, 102, 0, 51, 51, 0, 0, 0 }
            };
            const string bodyString = "P3\n6 6 255\n255 0 0 204 0 0 153 0 0 102 0 0 51 0 0 0 0 0\n0 255 0 0 204 0 0 153 0 0 102 0 0 51 0 0 0 0\n0 0 255 0 0 204 0 0 153 0 0 102 0 0 51 0 0 0\n255 255 0 204 204 0 153 153 0 102 102 0 51 51 0 0 0 0\n255 0 255 204 0 204 153 0 153 102 0 102 51 0 51 0 0 0\n0 255 255 0 204 204 0 153 153 0 102 102 0 51 51 0 0 0";
            var          bodyBytes  = UsAsciiEncoding.GetBytes(bodyString);

            var          factory = new ImageFactories.Image8Factory();
            var          reader  = new NetpbmReader();
            NetpbmImage8 image;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                image = (NetpbmImage8)reader.ReadImage(bodyStream, factory);
                image.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(6, image.Header.Width);
            Assert.Equal(6, image.Header.Height);
            Assert.Equal(255, image.Header.HighestComponentValue);
            Assert.Equal(3, image.Header.Components.Count);
            Assert.Equal(Component.Red, image.Header.Components[0]);
            Assert.Equal(Component.Green, image.Header.Components[1]);
            Assert.Equal(Component.Blue, image.Header.Components[2]);
            Assert.Equal((IEnumerable <byte>)referenceRows[0], (IEnumerable <byte>)image.LoadedNativeRows[0]);
            Assert.Equal((IEnumerable <byte>)referenceRows[1], (IEnumerable <byte>)image.LoadedNativeRows[1]);
            Assert.Equal((IEnumerable <byte>)referenceRows[2], (IEnumerable <byte>)image.LoadedNativeRows[2]);
            Assert.Equal((IEnumerable <byte>)referenceRows[3], (IEnumerable <byte>)image.LoadedNativeRows[3]);
            Assert.Equal((IEnumerable <byte>)referenceRows[4], (IEnumerable <byte>)image.LoadedNativeRows[4]);
            Assert.Equal((IEnumerable <byte>)referenceRows[5], (IEnumerable <byte>)image.LoadedNativeRows[5]);
        }
Esempio n. 19
0
        public void TwoTimesTwoTooFewPixels()
        {
            var bodyRawBytes = new object[]
            {
                'P', '4',
                '9', ' ', '1', ' ',
                0x01
            };
            var bodyBytes = bodyRawBytes.Select(Convert.ToByte).ToArray();

            var factory = new ImageFactories.Image8Factory();
            var reader  = new NetpbmReader();

            Assert.Throws <EndOfStreamException>(() =>
            {
                using (var bodyStream = new MemoryStream(bodyBytes, false))
                {
                    var image = reader.ReadImage(bodyStream, factory);
                    image.LoadData();
                }
            });
        }
Esempio n. 20
0
        static int Main(string[] args)
        {
            ParserResult <Options> genericResult = Parser.Default.ParseArguments <Options>(args);
            var result = genericResult as Parsed <Options>;

            if (result == null)
            {
                return(1);
            }

            NetpbmImage8 image8;
            var          reader  = new NetpbmReader();
            var          writer  = new NetpbmWriter();
            var          factory = new ImageFactories.Image8Factory();

            using (var inputStream = new FileStream(result.Value.InputFilename, FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                image8 = (NetpbmImage8)reader.ReadImage(inputStream, factory);
            }

            var supportedTypes = writer.SupportedTypesForImage(image8);

            if (!supportedTypes.Contains(result.Value.ToType))
            {
                Console.Error.WriteLine("The chosen image cannot be converted to the chosen type. Supported types for the image are:");
                foreach (var supportedType in new SortedSet <ImageType>(supportedTypes))
                {
                    Console.Error.WriteLine(supportedType);
                }
                Environment.Exit(1);
            }

            using (var outputStream = new FileStream(result.Value.OutputFilename, FileMode.Create, FileAccess.Write, FileShare.None))
            {
                writer.WriteImage(image8, outputStream, result.Value.ToType);
            }

            return(0);
        }
Esempio n. 21
0
        public void TwoTimesTwoValueOutOfRange()
        {
            var bodyRawBytes = new object[]
            {
                'P', '6',
                '\n',
                '2', ' ', '2', ' ', '1', '\n',
                0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
            };
            var bodyBytes = bodyRawBytes.Select(Convert.ToByte).ToArray();

            var factory = new ImageFactories.Image8Factory();
            var reader  = new NetpbmReader();

            Assert.Throws <InvalidDataException>(() =>
            {
                using (var bodyStream = new MemoryStream(bodyBytes, false))
                {
                    var image = reader.ReadImage(bodyStream, factory);
                    image.LoadData();
                }
            });
        }
Esempio n. 22
0
        public void ValidThreeTimesThreeLotsOfWhitespace()
        {
            var          redRow     = new byte[] { 1, 0, 0 };
            var          greenRow   = new byte[] { 0, 1, 0 };
            var          blueRow    = new byte[] { 0, 0, 1 };
            const string bodyString = "P3 \n   3      3  1 \n 1  0      0   1  0      0   1    0       0  0        1  0     0      1   0     0  1     0  0  0    1  0  0     1  0  0       1";
            var          bodyBytes  = UsAsciiEncoding.GetBytes(bodyString);

            var          factory = new ImageFactories.Image8Factory();
            var          reader  = new NetpbmReader();
            NetpbmImage8 image;

            using (var bodyStream = new MemoryStream(bodyBytes, false))
            {
                image = (NetpbmImage8)reader.ReadImage(bodyStream, factory);
                image.LoadData();
                Assert.Equal(-1, bodyStream.ReadByte());
            }

            Assert.Equal(3, image.Header.Width);
            Assert.Equal(3, image.Header.Height);
            Assert.Equal(1, image.Header.HighestComponentValue);
            Assert.Equal(3, image.Header.Components.Count);
            Assert.Equal(Component.Red, image.Header.Components[0]);
            Assert.Equal(Component.Green, image.Header.Components[1]);
            Assert.Equal(Component.Blue, image.Header.Components[2]);
            Assert.Equal((IEnumerable <byte>)redRow, (IEnumerable <byte>)image.GetNativePixel(0, 0));
            Assert.Equal((IEnumerable <byte>)redRow, (IEnumerable <byte>)image.GetNativePixel(1, 0));
            Assert.Equal((IEnumerable <byte>)redRow, (IEnumerable <byte>)image.GetNativePixel(2, 0));
            Assert.Equal((IEnumerable <byte>)greenRow, (IEnumerable <byte>)image.GetNativePixel(0, 1));
            Assert.Equal((IEnumerable <byte>)greenRow, (IEnumerable <byte>)image.GetNativePixel(1, 1));
            Assert.Equal((IEnumerable <byte>)greenRow, (IEnumerable <byte>)image.GetNativePixel(2, 1));
            Assert.Equal((IEnumerable <byte>)blueRow, (IEnumerable <byte>)image.GetNativePixel(0, 2));
            Assert.Equal((IEnumerable <byte>)blueRow, (IEnumerable <byte>)image.GetNativePixel(1, 2));
            Assert.Equal((IEnumerable <byte>)blueRow, (IEnumerable <byte>)image.GetNativePixel(2, 2));
        }