public static async Task <BitmapImage> ApplyColor(string sourceIm, string folderName)
        {
            String      fixSourceIm = sourceIm.Replace(@"/", @"\");
            StorageFile storageFile = await StorageFile.GetFileFromPathAsync(fixSourceIm);

            ImageProperties properties = await storageFile.Properties.GetImagePropertiesAsync();

            WriteableBitmap source = new WriteableBitmap((int)properties.Width, (int)properties.Height);

            source.SetSource(await storageFile.OpenAsync(FileAccessMode.Read));

            Color replaceBlack = Windows.UI.Color.FromArgb(255, byte.Parse(ModernColor.Substring(0, 2), System.Globalization.NumberStyles.HexNumber), byte.Parse(ModernColor.Substring(2, 2), System.Globalization.NumberStyles.HexNumber), byte.Parse(ModernColor.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));
            Color replaceWhite = Windows.UI.Color.FromArgb(255, byte.Parse(ModernAcent.Substring(0, 2), System.Globalization.NumberStyles.HexNumber), byte.Parse(ModernAcent.Substring(2, 2), System.Globalization.NumberStyles.HexNumber), byte.Parse(ModernAcent.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));

            byte[] byteArray = null;
            using (Stream stream = source.PixelBuffer.AsStream())
            {
                long streamLength = stream.Length;
                byteArray = new byte[streamLength];
                await stream.ReadAsync(byteArray, 0, byteArray.Length);

                if (streamLength > 0)
                {
                    for (int i = 0; i < streamLength; i += 4)
                    {
                        if (byteArray[i + 3] != 0)
                        {
                            int b = Convert.ToInt32(byteArray[i]);
                            int g = Convert.ToInt32(byteArray[i + 1]);
                            int r = Convert.ToInt32(byteArray[i + 2]);

                            double rB = ((b / 255.0) * replaceBlack.B) + (((255 - b) / 255.0) * replaceWhite.B);
                            double rG = ((g / 255.0) * replaceBlack.G) + (((255 - g) / 255.0) * replaceWhite.G);
                            double rR = ((r / 255.0) * replaceBlack.R) + (((255 - r) / 255.0) * replaceWhite.R);

                            byte blue  = Convert.ToByte(rB);
                            byte green = Convert.ToByte(rG);
                            byte red   = Convert.ToByte(rR);

                            byteArray[i]     = blue;  // Blue
                            byteArray[i + 1] = green; // Green
                            byteArray[i + 2] = red;   // Red
                        }
                    }
                }
            }
            if (byteArray != null)
            {
                WriteableBitmap result = await PixelBufferToWritableBitmap(byteArray, source.PixelWidth, source.PixelHeight);

                StorageFile image = await WriteableBitmapToStorageFile(result, $"{ModernAcent}-{ModernColor}", folderName);

                BitmapImage imageSource = await StorageFileToBitmapImage(image);

                return(imageSource);
            }
            return(null);
        }
        public static async Task <BitmapImage> ApplyColor(Uri sourceImage, string fileName, string folderName)
        {
            ApplicationDataContainer settings = ApplicationData.Current.LocalSettings;

            if ((string)settings.Values["UseDynamicAccent"] == "true")
            {
                string flatWallpaperAcent = (string)settings.Values[$"{(string)settings.Values["DayOrNight"]}FlatAccent-{(string)settings.Values["ColorIdNumber"]}"];
                ModernAcent = flatWallpaperAcent.Replace("#", "");
            }
            else
            {
                string flatWallpaperAcent = (string)settings.Values["FlatWallpaperAcent"];
                ModernAcent = flatWallpaperAcent.Replace("#", "");
            }
            if ((string)settings.Values["UseDynamicColor"] == "true")
            {
                string flatWallpaperAcent = (string)settings.Values[$"{(string)settings.Values["DayOrNight"]}FlatColor-{(string)settings.Values["ColorIdNumber"]}"];
                ModernColor = flatWallpaperAcent.Replace("#", "");
            }
            else
            {
                string flatWallpaperColor = (string)settings.Values["FlatWallpaperColor"];
                ModernColor = flatWallpaperColor.Replace("#", "");
            }
            Color           replaceBlack = Windows.UI.Color.FromArgb(255, byte.Parse(ModernColor.Substring(0, 2), System.Globalization.NumberStyles.HexNumber), byte.Parse(ModernColor.Substring(2, 2), System.Globalization.NumberStyles.HexNumber), byte.Parse(ModernColor.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));
            Color           replaceWhite = Windows.UI.Color.FromArgb(255, byte.Parse(ModernAcent.Substring(0, 2), System.Globalization.NumberStyles.HexNumber), byte.Parse(ModernAcent.Substring(2, 2), System.Globalization.NumberStyles.HexNumber), byte.Parse(ModernAcent.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));
            WriteableBitmap source       = await GetImageFile(sourceImage);

            byte[] byteArray = null;
            using (Stream stream = source.PixelBuffer.AsStream())
            {
                long streamLength = stream.Length;
                byteArray = new byte[streamLength];
                await stream.ReadAsync(byteArray, 0, byteArray.Length);

                if (streamLength > 0)
                {
                    for (int i = 0; i < streamLength; i += 4)
                    {
                        if (byteArray[i + 3] != 0)
                        {
                            int b = Convert.ToInt32(byteArray[i]);
                            int g = Convert.ToInt32(byteArray[i + 1]);
                            int r = Convert.ToInt32(byteArray[i + 2]);

                            double rB = ((b / 255.0) * replaceBlack.B) + (((255 - b) / 255.0) * replaceWhite.B);
                            double rG = ((g / 255.0) * replaceBlack.G) + (((255 - g) / 255.0) * replaceWhite.G);
                            double rR = ((r / 255.0) * replaceBlack.R) + (((255 - r) / 255.0) * replaceWhite.R);

                            byte blue  = Convert.ToByte(rB);
                            byte green = Convert.ToByte(rG);
                            byte red   = Convert.ToByte(rR);

                            byteArray[i]     = blue;  // Blue
                            byteArray[i + 1] = green; // Green
                            byteArray[i + 2] = red;   // Red
                        }
                    }
                }
            }
            if (byteArray != null)
            {
                WriteableBitmap result = await PixelBufferToWritableBitmap(byteArray, source.PixelWidth, source.PixelHeight);

                StorageFile image = await WriteableBitmapToStorageFile(result, fileName, folderName);

                BitmapImage imageSource = await StorageFileToBitmapImage(image);

                return(imageSource);
            }
            return(null);
        }