通过控制器从服务中检索屏幕截图图片

Retrieving screenshot pic from service via controller

我想用 cordova-screenshot-plugin 截图。我可以将该图片保存为变量或其他内容,以便以后可以对其进行操作吗?截图服务:

.service('$cordovaScreenshot', ['$q', function($q) {

    return {
        capture: function(filename, extension, quality) {
            extension = extension || 'jpg';
            quality = quality || '100';

            var defer = $q.defer();
            console.log(defer);
            navigator.screenshot.save(function(error, res) {
                if (error) {
                    console.error(error);
                    defer.reject(error);
                } else {
                    console.log('screenshot saved in: ', res.filePath);
                    defer.resolve(res.filePath);
                }
            }, extension, quality, filename);

            return defer.promise;
        }
    };
}]);

我会尝试用按钮截屏,并用弹出窗口显示。

Cordova-Plugin-ScreenshotAPI给你图片的文件路径。可以从智能手机的任何位置访问此文件路径。因此,您可以将官方 github 存储库中提供的示例服务与控制器中类似的内容一起使用:

// app is define elsewhere in your application

app.controller('Awesome.Controller', AwesomeController);

AwesomeController.$inject = ['$cordovaScreenshot'];

function AwesomeController($cordovaScreenshot) {
  var vm = this;
  vm.onClick = takeScreenshot;

  function takeScreenshot() {
    $cordovaScreeshot.capture('mypic', 'jpg', 80).then(function(filepath) {
      vm.filepath = filepath;
    }
  }
}

使用这样的 HTML 模板:

<button on-click="vm.onClick()">take screenshot</button>

<div ng-if="vm.filepath">
  <p>Result: {{vm.filepath}}</p>
  <img ng-src="{{vm.filepath}}>
</div>