0

Now in my WP 8.1 app using HTML5/CSS/Js, I can draw a canvas. I would like to save this canvas as jpg file in my phone, like canvas.toDataURL() or any similar way.

So how can I do it ?
Thanks for read.

Beri
  • 11,470
  • 4
  • 35
  • 57
Thanhtu150
  • 91
  • 2
  • 16

1 Answers1

0

You can use something like this:

 function(canvas,imgfilename ) {
      var fileStream, imgData;
      var Imaging = Windows.Graphics.Imaging;
      var localFolder = Windows.Storage.ApplicationData.current.localFolder;
      localFolder.createFileAsync(imgfilename, Windows.Storage.CreationCollisionOption.replaceExisting).then(function(file) {
           return file.openAsync(Windows.Storage.FileAccessMode.readWrite);
      }).then(function(stream) {
           fileStream = stream;
           var ctx = canvas.getContext('2d');
           imgData = ctx.getImageData(0, 0, ctrl.canvas.width, ctrl.canvas.height);
           return Imaging.BitmapEncoder.createAsync(Imaging.BitmapEncoder.jpegEncoderId, stream);
      }).then(function(encoder) {
           encoder.setPixelData(Imaging.BitmapPixelFormat.rgba8, Imaging.BitmapAlphaMode.straight, canvas.width, canvas.height, 96, 96, new Uint8Array(imgData.data));
           return encoder.flushAsync();
      }).done(function() {
           fileStream.close();
      }, function() {});
 }
Mehdi Lahlou
  • 375
  • 3
  • 8
  • You don't want "var" in front of imgData on line 10 since you want the imgData variable from the outer scope (not a new one scoped to the inner function). Also, declaring multiple variables on one line is a bad practice, don't do it. – Brandon Paddock Apr 19 '15 at 20:15