private static async Task <ImageData> RunFileTestAsync(string imageFileName, bool deleteFile, bool runTest) { if (imageFileName is null) { throw new ArgumentNullException(nameof(imageFileName)); } if (imageFileName.Length == 0) { throw new ArgumentException("path must not be empty string", nameof(imageFileName)); } var myPictures = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures); var cacheFileName = Path.Combine(myPictures, imageFileName); var cacheFile = new FileInfo(cacheFileName); if (deleteFile && cacheFile.Exists) { cacheFile.Delete(); } var cache = new CachingStrategy { new FileCacheLayer(cacheFile.Directory) }; var imageRequest = new ImageRequest( new Uri("https://www.seanmcbeth.com"), "2015-05.min.jpg"); var imageDecoder = new JpegFactory(80).Pipe(new JpegCodec()); var actual = await cache .LoadAsync(imageDecoder, imageRequest) .ConfigureAwait(false); if (runTest) { var path = Path.Combine(myPictures, "portrait-expected.jpg"); using var stream = FileDataSource.Instance.GetStream(path); var expected = imageDecoder.Deserialize(stream); var expectedData = expected.GetData(); var actualData = actual.GetData(); Assert.AreEqual(expected.Info.Dimensions.Width, actual.Info.Dimensions.Width); Assert.AreEqual(expected.Info.Dimensions.Height, actual.Info.Dimensions.Height); Assert.AreEqual(expectedData.Length, actualData.Length); for (var i = 0; i < expectedData.Length; ++i) { Assert.AreEqual(expectedData[i], actualData[i]); } } return(actual); }
public static void Main() { var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); var desktopDirectory = new DirectoryInfo(desktopPath); var imageFile = desktopDirectory .GetFiles("*.jpg") .First(f => f.Name.StartsWith("test", StringComparison.OrdinalIgnoreCase)); using var imageStream = imageFile.OpenRead(); var codec = new JpegFactory() .Pipe(new JpegCodec()); var image = codec.Deserialize(imageStream); var spaces = new ColorSpace[] { ColorSpace.HSI, ColorSpace.HSL, ColorSpace.HSV, ColorSpace.RGB, ColorSpace.YCH_Adobe, ColorSpace.YCH_HDR, ColorSpace.YCH_SDTV, ColorSpace.YCH_sRGB }; for (var s = 0; s < spaces.Length; ++s) { var images = new[] { Resize(image, 0, 0, 3, spaces[s]), Resize(image, 1, 0, 3, spaces[s]), Resize(image, 0, 1, 3, spaces[s]), Resize(image, 1, 1, 3, spaces[s]) }; for (var i = 0; i < images.Length; ++i) { var index = (s * images.Length) + i + 1; var path = Path.Combine(desktopDirectory.FullName, $"test ({index}).jpg"); codec.Serialize(path, images[i]); } } }