Esempio n. 1
0
        private (Bitmap, ColorDifference) ImagesDifference(Image firstImage, Image secondImage, IColorDifferences colorDifferences, int multiplier = 25)
        {
            int width  = Math.Min(firstImage.Width, secondImage.Width);
            int height = Math.Min(firstImage.Height, secondImage.Height);

            Bitmap first  = (Bitmap)firstImage;
            Bitmap second = (Bitmap)secondImage;
            Bitmap diff   = new Bitmap(width, height);

            ColorDifference totalDifference = new ColorDifference();

            for (int i = 0; i < width; ++i)
            {
                for (int j = 0; j < height; ++j)
                {
                    Color firstImagePx  = first.GetPixel(i, j);
                    Color secondImagePx = second.GetPixel(i, j);

                    Color differencePx = colorDifferences.GetDifference(firstImagePx, secondImagePx, multiplier);

                    totalDifference.Accumulate(differencePx);

                    diff.SetPixel(i, j, differencePx);
                }
            }
            totalDifference.Reduce(multiplier);

            return(diff, totalDifference);
        }