示例#1
0
        public void FirstTest()
        {
            using var imageStream = new FileStream(@"C:\Projects\GoodEnough.Biology\Assets\tanuki.jpg", FileMode.Open);
            using var image       = Image.Load <Rgba32>(imageStream);
            using var cts         = new CancellationTokenSource();

            using var eye = new HumanEye(width: image.Width, height: image.Height, cts.Token);

            var writer = eye.SensoryFlow.Writer;

            if (image.TryGetSinglePixelSpan(out var pixels))
            {
                for (var i = 0; i < pixels.Length; i++)
                {
                    // writer.TryWrite((pixels[i]);
                }

                //writer.TryComplete();
            }
            //Task.Delay(50000).Wait();
            //
            //cts.Cancel();
            //
            //Span<Rgba32> retinaSpan = MemoryMarshal.Cast<byte, Rgba32>(eye.Retina.Grid.GetSpan());
            //
            //retinaSpan.ToArray().Should().ContainInOrder(pixels.ToArray());
        }
示例#2
0
        public static async Task Main()
        {
            using var imageStream = new FileStream(@"C:\Projects\GoodEnough.Biology\Assets\tanuki.jpg", FileMode.Open);
            using var image       = Image.Load <Rgba32>(imageStream);
            using var cts         = new CancellationTokenSource();

            using var eye = new HumanEye(width: image.Width, height: image.Height, cts.Token);

            var writer = eye.SensoryFlow.Writer;

            while (true)
            {
                for (var y = 0; y < image.Height; y++)
                {
                    for (var x = 0; x < image.Width; x++)
                    {
                        await writer.WriteAsync((x, y, image[x, y]));