###前提・実現したいこと
・デスクトップのキャプチャを数秒おきに撮影するelectronアプリを作成したい。
→キャプチャの撮影はelectronAPIの「desktopCapturer」で実現出来ました。
・しかし、キャプチャを撮るたびにメモリの使用量が増え、最終的にはelectronが強制終了されてしまう。
→キャプチャを保存したらそのデータは不要になるので、次回のキャプチャまでにメモリを開放したい。
※ 画像サイズを1000×1000に指定すると、一回のキャプチャでメモリの使用量が約20MB増えてしまいます。
###該当のソースコード
const desktopCapturer = require('electron').desktopCapturer; var capture=function(){ //キャプチャを撮る desktopCapturer.getSources({ types: ['screen'], thumbnailSize: { width: 1000, height: 1000 } }, function(error, sources){ for (var i = 0; i < sources.length; ++i) { if (sources[i].name === 'Entire screen') { //キャプチャを保存 fs.writeFile("保存先のファイルを指定", sources[i].thumbnail.toPng(), function() { setTimeout(function() { capture(); }, 2*1000); }); } } }); }
###試したこと
1.「desktopCapturer=null;」を保存後に実行。
2.キャプチャ撮影のみ別のbrowserWindowで実行し、撮影後そのbrowserWindowだけ閉じる。
どちらも状況は変わらずでした。
###質問
1.「desktopCapturer」で増えたメモリを開放するにはどうすれば良いでしょうか?
2.「desktopCapturer」以外で、electronを使ってデスクトップのスクリーンショットを撮る方法はありますでしょうか?
###参考にしたサイト
Electron Documentation API desktopCapturer
https://electron.atom.io/docs/api/desktop-capturer/
Electron APIデモから学ぶ実装テクニック スクリーンショットの取得
http://www.buildinsider.net/enterprise/electron/04#screenshot
あなたの回答
tips
プレビュー