public async override void Invoke()
        {
            if (string.IsNullOrEmpty(_url.UrlString.Text))
                return;

            ImageCompressor compressor = new ImageCompressor();
            string url = _url.UrlString.Text.Trim('"', '\'');

            if (_url.IsDataUri())
            {
                string dataUri = await compressor.CompressDataUri(url);

                if (dataUri.Length < url.Length)
                {
                    using (EditorExtensionsPackage.UndoContext("Optimize image"))
                    {
                        Span span = Span.FromBounds(_url.UrlString.Start, _url.UrlString.AfterEnd);
                        _span.TextBuffer.Replace(span, "'" + dataUri + "'");
                    }
                }
            }
            else
            {
                string selection = Uri.UnescapeDataString(url);
                string fileName = ProjectHelpers.ToAbsoluteFilePath(selection, _span.TextBuffer.GetFileName());

                if (string.IsNullOrEmpty(fileName) || !ImageCompressor.IsFileSupported(fileName) || !File.Exists(fileName))
                    return;

                await compressor.CompressFiles(fileName);
            }
        }
        public static async void SaveClipboardImageToFile(IDataObject data, string fileName)
        {
            if (data.GetDataPresent(DataFormats.FileDrop))
            {
                string original = ((string[])data.GetData(DataFormats.FileDrop))[0];

                if (File.Exists(original))
                    File.Copy(original, fileName, true);
            }
            else
            {
                using (Bitmap image = (Bitmap)data.GetData("System.Drawing.Bitmap"))
                using (MemoryStream ms = new MemoryStream())
                {
                    image.Save(ms, GetImageFormat(Path.GetExtension(fileName)));
                    byte[] buffer = ms.ToArray();
                    File.WriteAllBytes(fileName, buffer);
                }
            }

            ImageCompressor compressor = new ImageCompressor();
            await compressor.CompressFiles(fileName);

            ProjectHelpers.AddFileToActiveProject(fileName);
        }