Take the following steps to start a project and to add some code that will demonstrate loading and saving images in WinRT using RasterCodecs.
In the Solution Explorer window, right-click on the References folder for the project and select Add Reference... from the context menu. Browse to the <LEADTOOLS_INSTALLDIR>\Bin\WinRT8_1\ folder (depending on your target platform), and select the following .WINMD files:
Click the Add button and then click OK to add the above references.
Open the default.html file and copy the below html code into the editor:
<Pagex:Class="WinRT_LoadSave.MainPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:WinRT_LoadSave"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"mc:Ignorable="d"><Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}" HorizontalAlignment="Center" VerticalAlignment="Center" ><Grid.RowDefinitions><RowDefinitionHeight="100" /><RowDefinition Height="100" /></Grid.RowDefinitions><Buttonx:Name="_loadButton"Grid.Row="0" Content="Load Image" Click="LoadButton_Click" /><Buttonx:Name="_saveButton" Grid.Row="1" Content="Save Image" Click="SaveButton_Click" /></Grid></Page>
Switch to the MainPage.xaml code view (right-click MainPage.xaml in the Solution Explorer and select View Code) and add the following lines at the beginning of the file:
using Windows.Storage;using Windows.Storage.Pickers;using Windows.Storage.Streams;using Windows.UI.Popups;using Leadtools;using Leadtools.Codecs;
Switch to MainPage.xaml code view (right-click MainPage.xaml in the Solution Explorer then select View Code) and add the following class level variables:
private RasterImage _loadedImage;private string [] _extensions = new string []{".jpg", ".png",".bmp", ".pcx",".psd", ".cmp",".tif", ".tiff",".j2k", ".jbg",".gif", ".jls",".jb2", ".dcm",".dic", ".pdf"};
Update the MainPage() constructor as shown below:
public MainPage(){this.InitializeComponent();RasterSupport.Initialize();}
Add the following class functions:
private async void ShowMessage(string message){MessageDialog msgDlg = new MessageDialog(message);await msgDlg.ShowAsync();}private async void LoadButton_Click(object sender, RoutedEventArgs e){FileOpenPicker openPicker = new FileOpenPicker();openPicker.ViewMode = PickerViewMode.Thumbnail;openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;foreach (String extension in _extensions)openPicker.FileTypeFilter.Add(extension);StorageFile file = await openPicker.PickSingleFileAsync();if (null != file){RasterCodecs codecs = new RasterCodecs();//Open the file as a WinRT RandomAccessStreamtry{IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.Read);ILeadStream leadStream = LeadStreamFactory.Create(stream, true);_loadedImage = await codecs.LoadAsync(leadStream);ShowMessage("Image loaded successfully");}catch (Exception ex){String errorMessage = null;RasterException rasterException = RasterException.FromHResult(ex.HResult);if (rasterException != null){if (rasterException.Message != null)errorMessage = rasterException.Message;elseerrorMessage = string.Format("Code: {0}", rasterException.Code);}elseerrorMessage = ex.Message;ShowMessage(errorMessage);}}}private async void SaveButton_Click(object sender, RoutedEventArgs e){if (_loadedImage == null){ShowMessage("Must load an image first!");return;}FileSavePicker savePicker = new FileSavePicker();savePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;savePicker.FileTypeChoices.Add(".jpeg", new List<string>{".jpg"});savePicker.DefaultFileExtension = ".jpeg";try{StorageFile file = await savePicker.PickSaveFileAsync();if (file != null){IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite);ILeadStream leadStream = LeadStreamFactory.Create(stream, true);using (IDisposable disposable = leadStream as IDisposable){//Save the imageRasterCodecs codecs = new RasterCodecs();await codecs.SaveAsync(_loadedImage, //RasterImage to saveleadStream, //ILeadStream to save intoRasterImageFormat.Tif, //The RasterImageFormat which tells our RasterCodecs object which codec to use.0); //specifying 0 Bits Per Pixel tells tells the RasterCodecs to use the default Bits Per Pixel for the specified format.ShowMessage("Image saved successfully");}}}catch (Exception ex){String errorMessage = null;RasterException rasterException = RasterException.FromHResult(ex.HResult);if (rasterException != null){if (rasterException.Message != null)errorMessage = rasterException.Message;elseerrorMessage = string.Format("Code: {0}", rasterException.Code);}elseerrorMessage = ex.Message;ShowMessage(errorMessage);}}
Build, and Run the program to test it.
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET
