private async Task ResizeOne(XElement element) { var size = element.Element(ns + "Size"); int viewWidth = (int)decimal.Parse(size.Attribute("width").Value, CultureInfo.InvariantCulture); int viewHeight = (int)decimal.Parse(size.Attribute("height").Value, CultureInfo.InvariantCulture); using (var image = ReadImage(element)) { using (var dialog = new ResizeImagesDialog(image, viewWidth, viewHeight)) { var result = dialog.ShowDialog(owner); if (result == DialogResult.OK) { if (!dialog.PreserveSize) { using (var data = dialog.GetImage()) { if (data != null) { WriteImage(element, data); } } } size.SetAttributeValue("width", dialog.WidthPixels.ToString(CultureInfo.InvariantCulture)); size.SetAttributeValue("height", dialog.HeightPixels.ToString(CultureInfo.InvariantCulture)); size.SetAttributeValue("isSetByUser", "true"); await one.Update(page); } } } }
private async Task ResizeOne(XElement element) { var size = element.Element(ns + "Size"); int viewWidth = (int)decimal.Parse(size.Attribute("width").Value, CultureInfo.InvariantCulture); int viewHeight = (int)decimal.Parse(size.Attribute("height").Value, CultureInfo.InvariantCulture); using (var image = ReadImage(element)) { // when pasting an image onto the page, width or height can be zero // OneNote ignores both if either is zero so we'll do the same... if (viewWidth == 0 || viewHeight == 0) { viewWidth = image.Width; viewHeight = image.Height; } using (var dialog = new ResizeImagesDialog(image, viewWidth, viewHeight)) { var result = dialog.ShowDialog(owner); if (result != DialogResult.OK) { return; } if (dialog.NeedsRewrite) { using (var data = dialog.GetImage()) { if (data != null) { WriteImage(element, data); } } } size.SetAttributeValue("width", dialog.ImageWidth.ToString(CultureInfo.InvariantCulture)); size.SetAttributeValue("height", dialog.ImageHeight.ToString(CultureInfo.InvariantCulture)); size.SetAttributeValue("isSetByUser", "true"); logger.WriteLine($"resized from {viewWidth} x {viewHeight} to {dialog.ImageWidth} x {dialog.ImageHeight}"); await one.Update(page); } } }
private async Task ResizeMany(IEnumerable <XElement> elements) { using (var dialog = new ResizeImagesDialog()) { var result = dialog.ShowDialog(owner); if (result == DialogResult.OK) { var width = dialog.WidthPixels.ToString(CultureInfo.InvariantCulture); foreach (var element in elements) { var size = element.Element(ns + "Size"); var imageWidth = (int)decimal.Parse( size.Attribute("width").Value, CultureInfo.InvariantCulture); var imageHeight = (int)decimal.Parse( size.Attribute("height").Value, CultureInfo.InvariantCulture); var height = (int)(imageHeight * (dialog.WidthPixels / imageWidth)); if (!dialog.PreserveSize) { using (var image = ReadImage(element)) { using (var data = image.Resize((int)dialog.WidthPixels, height, dialog.Quality)) { WriteImage(element, data); } } } size.SetAttributeValue("width", width); size.SetAttributeValue("height", height.ToString(CultureInfo.InvariantCulture)); size.SetAttributeValue("isSetByUser", "true"); } await one.Update(page); } } }
private async Task ResizeMany(IEnumerable <XElement> elements) { using (var dialog = new ResizeImagesDialog()) { var result = dialog.ShowDialog(owner); if (result != DialogResult.OK) { return; } foreach (var element in elements) { using (var image = ReadImage(element)) { var size = element.Element(ns + "Size"); var viewWidth = (int)decimal.Parse( size.Attribute("width").Value, CultureInfo.InvariantCulture); var viewHeight = (int)decimal.Parse( size.Attribute("height").Value, CultureInfo.InvariantCulture); // when pasting an image onto the page, width or height can be zero // OneNote ignores both if either is zero so we'll do the same... if (viewWidth == 0 || viewHeight == 0) { viewWidth = image.Width; viewHeight = image.Height; } int width, height; if (dialog.Percent > 0) { width = (int)(viewWidth * (dialog.Percent / 100)); height = (int)(viewHeight * (dialog.Percent / 100)); } else { width = (int)dialog.ImageWidth; height = dialog.LockAspect ? (int)(viewHeight * (dialog.ImageWidth / viewWidth)) : (int)dialog.ImageHeight; } if (dialog.NeedsRewrite) { Image data = null; try { data = dialog.Adjust(image.Resize(width, height)); WriteImage(element, data); } finally { data?.Dispose(); } } size.SetAttributeValue("width", width.ToString(CultureInfo.InvariantCulture)); size.SetAttributeValue("height", height.ToString(CultureInfo.InvariantCulture)); size.SetAttributeValue("isSetByUser", "true"); logger.WriteLine($"resized from {image.Width} x {image.Height} to {width} x {height}"); } } await one.Update(page); } }