헤드리스 브라우저 이미지 품질-헤드리스 크롬, 팬텀 JS, 슬림 JS


11

헤드리스 브라우저에서 발생하는 상황에 대한 자세한 정보를 찾고 있습니다. 과거 에는 다른 사이트에서 스크린 샷을 찍기 위해 slimmerJS , Phantom.jsHeadless Chrome 과 같은 다른 헤드리스 브라우저로 작업했습니다 .

브라우저에서 보는 것과 비슷한 실제적이고 선명한 화질의 이미지를 생성 할 수 없었습니다. 도구 한계처럼 보입니다. 왜, 그리고 아마도 더 나은 방법.

아래 예를 비교하십시오.

  1. 이 웹 사이트 ( https://en.wikipedia.org/wiki/Main_Page )의 왼쪽 상단에서 Wikipedia 로고를 찾으십시오.
  2. 이것은 puppeteer를 통해 헤드리스 크롬이 찍은 로고의 스크린 샷입니다.

여기에 이미지 설명을 입력하십시오

실제 웹 사이트와 스크린 샷을 비교하면 이미지가 어떻게 흐려지는 지 볼 수 있습니다. 이 예제에서는 이미지 일 뿐이지 만 HTML 텍스트에서도 발생합니다.

이제 내 컴퓨터를 사용하여 스크린 샷을 찍으려면 Windows, mac, linux 인 것처럼 실제 거래처럼 보이는 고품질 스크린 샷을 얻을 수 있습니다.

왜 이런 일이 발생합니까? 각 라이브러리에서 최고 품질로 스크린 샷을 설정하고 스크린 샷이 적절한 해상도를 갖도록 충분히 큰 뷰포트를 설정하는 것과 같은 모든 표준 작업을 시도했습니다. 이것이 헤드리스 브라우저 스크린 샷에서 얻을 수있는 최고의 품질입니까?

이 분야에 대한 깨달음은 감사하겠습니다. 감사!

답변:


7

deviceScaleFactor를 2 (일명 망막 에뮬레이션)로 설정하면 더 나은 결과를 얻을 수 있습니다.

(async () => {
    const browser = await puppeteer.launch({ headless: false })
    const page = await browser.newPage();
    await page.setViewport({width: 800, height: 800, deviceScaleFactor: 2});
    await page.goto('https://en.wikipedia.org/wiki/Main_Page')

    await page.screenshot({ fullPage: true, path: 'test.png' })
})();

보시다시피 매우 괜찮은 결과를 얻을 수 있습니다.

여기에 이미지 설명을 입력하십시오

출처 : https://github.com/puppeteer/puppeteer/issues/571

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.