Here is a tutorial to resize and save an image.
1. Make sure you have the version 2.0 Preview 0.6 of CSHTML5 (expected June 2019) so that you have the "Image.INTERNAL_DomImageElement" property. In the meantime, you can compile the source code from GitHub at: https://github.com/cshtml5/CSHTML5 to get this property.
2. Create a CSHTML5 project
3. Copy an image into the project. For example, let's call it "my-source-image.jpg"
4. Put the following XAML in your MainPage.xaml:
Code: Select all
<StackPanel>
<Image x:Name="Image1" Source="my-source-image.jpg"/>
<Button Content="Resize" Click="Button_Click"/>
</StackPanel>
5. Put the following C# in your MainPage.xaml.cs:
Code: Select all
private void Button_Click(object sender, RoutedEventArgs e)
{
if (Image1.IsLoaded)
{
ResizeAndSave(Image1, 100, 100);
}
}
public static void ResizeAndSave(Image imageControl, int finalWidth, int finalHeight)
{
CSHTML5.Interop.ExecuteJavaScript(
@"
// Reference the C# arguments from the JavaScript scope. Refer to the documentation at: http://cshtml5.com/links/how-to-call-javascript.aspx
var sourceImage = $0;
var finalWidth = $1;
var finalHeight = $2;
// Resize the image. Credits: https://stackoverflow.com/questions/19262141/resize-image-with-javascript-canvas-smoothly
var tempCanvas = document.createElement('canvas');
var tempCanvasContext = tempCanvas.getContext('2d');
tempCanvas.width = finalWidth;
tempCanvas.height = finalHeight;
tempCanvasContext.drawImage(sourceImage, 0, 0, finalWidth, finalHeight);
// Save the image. Credits: https://stackoverflow.com/questions/10673122/how-to-save-canvas-as-an-image-with-canvas-todataurl
var image = tempCanvas.toDataURL('image/png').replace('image/png', 'image/octet-stream');
window.location.href = image;
",
imageControl.INTERNAL_DomImageElement, finalWidth, finalHeight);
}
6. Launch the Simulator, click the option "Use http://localhost", and click "Run in browser".
Notes:
- The image will be downloaded without the extension. You need to change the extension to ".png" (or patch the code above)
- Downloading the image won't work in the Simulator (please expect a JS error when running the code above)
- Downloading the image may have security cross-domain issues if you run from C: This is why you need to check the option "Use http://localhost".
Regards