示例#1
0
    public ExtractImageCommand()
        : base("image", "Extract image from chart")
    {
        var input =
            new Option <FileInfo>("--input", "Input file")
        {
            IsRequired = true
        };

        var output =
            new Option <FileInfo>("--output", "Output file")
        {
            IsRequired = true
        };

        this.Add(input);
        this.Add(output);

        this.SetHandler(
            async(FileInfo input, FileInfo output) =>
        {
            using var inputStream = input.OpenRead();

            var chart = await BsbChartReader.ReadChartAsync(inputStream);

            var image = chart.ToImage();

            using var outputStream = output.OpenWrite();

            image.SaveAsPng(outputStream);
        },
            input,
            output);
    }
        public async Task ReadsTextSegment()
        {
            using var stream = await MockChartStream.CreateAsync(
                      new[] {
                "KNP/SC=40000,GD=WGS84,PR=Mercator,PP=48.666667,PI=4.000,SK=0.000000\r\n",
                "    TA=90.000000,UN=METRES,SD=Lower Low Water Large Tide,DX=4.000000\r\n",
                "    DY=4.000000\r\n",
                "KNQ/EC=WE,GD=WGE,VC=HHLT,SC=LLLT,PC=MC,P1=0.000000,P2=48.666667\r\n",
                "    P3=NOT_APPLICABLE,P4=NOT_APPLICABLE,GC=UB,RM=INVERSE\r\n"
            },
                      1);

            var chart = await BsbChartReader.ReadChartAsync(stream);

            Assert.NotNull(chart);
            Assert.NotNull(chart.TextSegment);

            var textSegment = chart.TextSegment.ToArray();

            Assert.Equal(2, textSegment.Length);

            Assert.Equal("KNP", textSegment[0].EntryType);
            Assert.Equal("KNQ", textSegment[1].EntryType);

            Assert.Equal(1, chart.BitDepth.Value);
        }
示例#3
0
        public async Task ImageConversionTest()
        {
            using var stream = File.OpenRead("../../../../../assets/test/344102.KAP");

            var chart = await BsbChartReader.ReadChartAsync(stream);

            using var actualImage = chart.ToImage();

            using var expectedImage = await Image.LoadAsync <Rgba32>("../../../../../assets/test/344102.png");

            ImageAssert.Equal(expectedImage, actualImage);
        }
        public async Task ReadSampleChart()
        {
            using var stream = File.OpenRead("../../../../../assets/test/344102.KAP");

            var chart = await BsbChartReader.ReadChartAsync(stream);

            Assert.NotNull(chart);
            Assert.NotNull(chart.TextSegment);
            Assert.NotNull(chart.RasterSegment);
            Assert.Equal(2098, chart.RasterSegment.Count());

            uint index = 1;

            foreach (var row in chart.RasterSegment)
            {
                Assert.Equal(index++, row.Key);

                Assert.Equal <uint>(1171, row.Value.Aggregate <BsbRasterRun, uint>(0, (sum, run) => sum + run.Length));
            }
        }