2017-05-26 24 views
2

IM使用Web contents.capture()函数从窗口得到的截图,但是图像的质量不令人满意时 继承人的代码电子低质量NativeImage toJPG

ipcRenderer.on('saved-file', (event, path) =>{ 
    if (path) { 
    remote.BrowserWindow.getFocusedWindow().webContents.[capturePage][1]((image)=>{ 
    scrImage = image.toJPEG(100); 
    console.log(scrImage.toString()); 
    fs.writeFile(path, scrImage, (err) => { 
     if (err) { 
     console.error(err); 
     } 
     console.log(path); 
    }); 

    }); 

sample image

,你可以看到在图像上方Res对我们的用户来说不够好;电子Demo中的 DemoAPI质量的Capture图像是一样的。

有没有其他方法可以获得更好的质量?

+3

你能解释一下对图片不满意吗?发表示例 – HSchmale

+0

@Hschmale用户声称它的用例不够好 – alirezaac

+0

是否有toPng方法和resize方法? – HSchmale

回答

0

知道为什么质量不满足您的用户将是非常好的。它捕获的图像与您的BrowserWindow上的图像完全相同。

但是NativeImage API为您提供了一些方法来改善你的影像质量:

  • 可以转换为PNG
  • ,您可以调整图像
  • 可以在高DPI diplays使用高DPI图片

以下代码PNG创建〜800 KB作为截图:

const { BrowserWindow, app } = require('electron') 
const fs = require('fs') 

app.once('ready',() => { 
    let win = new BrowserWindow({ 
    width: 1280, // win size affects captured image ofc 
    height: 720 
    }) 
    win.webContents.on('dom-ready',() => { 
    setTimeout(() => { 
     win.capturePage(img => { 
     var conv = img.resize({ // resize 
      width: 2560, 
      height: 1480, 
      quality: 'best' 
     }).toPNG(1.0) // to PNG 
     fs.writeFile(__dirname + '/captured.png', conv, err => { 
      if (err) console.log(err) 
     }); 
     }) 
    }, 3000); 
    }) 
    win.loadURL('http://github.com') 
}) 
+0

谢谢!它帮了很多,没有足够的代表upvot :) – alirezaac