Как сохранить холст в виде файла изображения в приложении WP библиотеки изображений с помощью HTML5?

Теперь в моем приложении WP 8.1, использующем HTML5/CSS/Js, я могу рисовать холст. Я хотел бы сохранить этот холст в формате jpg на своем телефоне, например, canvas.toDataURL() или любым другим способом.

Итак, как я могу это сделать?
Спасибо, что прочитали.


person Thanhtu150    schedule 18.04.2015    source источник
comment
Я думаю, что это невозможно из соображений безопасности.   -  person hindmost    schedule 18.04.2015
comment
может быть, этот ответ может помочь stackoverflow.com/a/12230195/1861097?   -  person Johncze    schedule 18.04.2015
comment
Уточнил вопрос.   -  person Beri    schedule 21.04.2015


Ответы (1)


Вы можете использовать что-то вроде этого:

 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() {});
 }
person Mehdi Lahlou    schedule 18.04.2015
comment
Вам не нужен var перед imgData в строке 10, поскольку вам нужна переменная imgData из внешней области (а не новая, связанная с внутренней функцией). Кроме того, объявление нескольких переменных в одной строке — плохая практика, не делайте этого. - person Brandon Paddock; 19.04.2015