Example #1
0
        private List <ImageItem> FindBestByContent(Bitmap img)
        {
            ulong minError = ulong.MaxValue;
            ulong offset   = 100000;

            byte[,] thumbnail = Processing.CreateThumbnail(img, Db.Images[0].ThumbnailSize);
            var candidatesList = new List <ImageItem>();
            var errorList      = new Dictionary <string, ulong>();

            foreach (ImageItem item in Db.Images)
            {
                ulong error = Processing.CalculateError(item.Thumbnail, thumbnail);
                errorList.Add(item.Filename, error);
                if (error < minError)
                {
                    minError = error;
                }
            }
            foreach (ImageItem item in Db.Images)
            {
                if (errorList[item.Filename] < minError + offset)
                {
                    candidatesList.Add(item);
                }
            }
            return(candidatesList);
        }