示例#1
0
        private static void ExecuteIndex(string[] args)
        {
            IEnumerable <string> photoFiles = GetPhotoPaths(args).Distinct();
            string databaseFile             = GetDatabasePath(args);

            if (photoFiles.Any() == false || string.IsNullOrWhiteSpace(databaseFile))
            {
                PrintHelp("Photo file or database path not provided");
                return;
            }

            PhotoFingerPrintDatabaseWrapper database = File.Exists(databaseFile)
                ? PhotoFingerPrintDatabaseLoader.Load(databaseFile)
                : new PhotoFingerPrintDatabaseWrapper();

            IEnumerable <PhotoFingerPrintWrapper> fingerPrintBag = IndexPhotosImpl(photoFiles, database);

            database.PhotoFingerPrints = fingerPrintBag.ToArray();
            PhotoFingerPrintDatabaseSaver.Save(database, databaseFile);
        }
        public void TestPhotoIndexerSerialization()
        {
            var photoFingerPrint = new PhotoFingerPrintWrapper
            {
                FilePath           = "test.png",
                PHash              = 0x0A,
                EdgeGrayScaleThumb = new byte[] { 0, 1, 1 },
            };

            var database = new PhotoFingerPrintDatabaseWrapper
            {
                PhotoFingerPrints = new[] { photoFingerPrint },
            };

            using (var memoryStream = new MemoryStream())
            {
                PhotoFingerPrintDatabaseSaver.Save(database, memoryStream);
                byte[] savedDatabase = memoryStream.ToArray();
                PhotoFingerPrintDatabaseWrapper reloadedDatabase = PhotoFingerPrintDatabaseLoader.Load(savedDatabase);

                Assert.AreEqual(database, reloadedDatabase);
            }
        }