브라우저의 캡처샷을 연결해서 GIF 이미지를 만들자. [Puppeeteer로 가속!]
11385 단어 네트워크 서비스puppeteerJavaScriptWeb개인 개발
사용자가 입력한 하이쿠에서 GIF 이미지를 생성합니다.
이것은 서버로 브라우저 (Chrome) 를 시작해서 그 캡처를 연결해서 만든 것이다.
################################################### ################################################### ↑ 이런 느낌을 줄 수 있는 GIF.꼭 실제로 해보세요.
GIF 이미지를 어떻게 만드는지 코드가 첨부된 해설
이번에 사용한 언어는 Nodejs입니다.
우선 적당한 빈 디렉터리로 이동해서 다음 명령을 실행하십시오.
$ npm init -f
$ npm install puppeteer png-js gifencoder
사용할 라이브러리 3개를 간단히 설명합니다.먼저 Pupeteer는 GUI를 사용하지 않고 API를 통해 브라우저를 제어할 수 있습니다.js로 만든 라이브러리입니다.이번에는 Puppeeter의 캡처 기능을 활용했다.
pg-js는 Pupper가 촬영한 Squist PNG 데이터를 노드로 처리하는 프로그램 라이브러리로, gifencoder는 pg에서 GIF를 만드는 프로그램 라이브러리다.
다음은 index.js를 제작하려면 다음과 같이 하십시오.한 번 복사해서 동작을 확인하는 것이 좋습니다.
index.js
const fs = require('fs');
const puppeteer = require('puppeteer');
const GIFEncoder = require('gifencoder');
const PNG = require('png-js');
function decode(png) {
return new Promise(r => {
png.decode(pixels => r(pixels))
});
}
async function gifAddFrame(page, encoder) {
const pngBuffer = await page.screenshot({clip: {width: 1024, height: 200, x: 0, y: 0}});
const png = new PNG(pngBuffer);
await decode(png).then(pixels => encoder.addFrame(pixels));
}
(async () => {
const browser = await puppeteer.launch({
headless: false, slowMo: 0,
});
const page = await browser.newPage();
page.setViewport({width: 1024, height: 200});
const text = '私は猫になりたい';
const html = `<div id="main" style="font-size: 100px;">${text[0]}</div>`;
await page.setContent(html, {
waitUntil: ['networkidle0']
});
// record gif
var encoder = new GIFEncoder(1024, 200);
encoder.createWriteStream()
.pipe(fs.createWriteStream('test.gif'));
// setting gif encoder
encoder.start();
encoder.setRepeat(0);
encoder.setDelay(150);
encoder.setQuality(10); // default
for (let i = 0; i < 10; i++) {
await gifAddFrame(page, encoder);
await page.evaluate(`document.getElementById("main").innerHTML = '${text.slice(0, i + 1)}'`)
}
// finish encoder, test.gif saved
encoder.finish();
await browser.close();
})();
그리고 실행한다.$ node index.js
동작이 끝나면이런 서류는 다 만들었을 거야.그걸 열면 다음 그림을 만들 수 있어요!
상세히 설명하다
방금 코드를 해독하기 위해 해설을 진행하다.
전체 프로세스
Pupeteer를 사용하여 HTML을 렌더링합니다. (이때는 "고양이가 되고 싶다"는 "나"만 렌더링합니다.
다음 순환
→사진 찍기
→gifencoder로 하여금 Square의 데이터를 읽게 하다
오류 프롬프트에서 브라우저에서 JS를 실행합니다.
네.마지막 JS를 수행하는 것은
await page.evaluate(`document.getElementById("main").innerHTML = '${text.slice(0, i + 1)}'`)
섹션브라우저의 HTML 표시를 변경하는 JS를 실행하여 애니메이션을 만들 수 있습니다.그리고 코드를 읽으면 이해할 수 있을 것 같아요.
총결산
「 메이커 」만들면서 어떻게 하면 좋을지 반복해서 시험하다가 이 모양이 됐어요.
GIF를 만들 수 있다면 재미있는 서비스를 많이 제공할 수 있을 것 같아서 흥분할 거예요.
끝까지 읽어주셔서 감사합니다.그래, 주식, 네 평론을 기다릴게.
그럼, 마지막 한마디.
끝맺다
제가 개발한 게임을 제작하고 배우는 프로그래밍 학습 서비스 전공 학원에서도 무료 체험을 합니다.꼭 보세요.
Reference
이 문제에 관하여(브라우저의 캡처샷을 연결해서 GIF 이미지를 만들자. [Puppeeteer로 가속!]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KenRoda/items/6cbfde2a75438b3b557e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)