node 문자 생 성 그림 의 예제 코드
거의 이렇게 되 었 다.
백 엔 드 루비 형 들 이 html 로 그림 을 돌 렸 어 요.너무 느리게 돌 았 다 고 해서 이 구 덩이 를 이 어 갔 어 요.
그래서 자기 전에 뒤 척 이 며 간단 한 실현 을 했다.
해결 방향
텍스트 변환 svg->svg 변환 png->그림 병합
관련 바퀴
'use strict';
const fs = require('fs');
const images = require('images');
const TextToSVG = require('text-to-svg');
const svg2png = require("svg2png");
const Promise = require('bluebird');
Promise.promisifyAll(fs);
const textToSVG = TextToSVG.loadSync('fonts/ .ttf');
const sourceImg = images('./i/webwxgetmsgimg.jpg');
const sWidth = sourceImg.width();
const sHeight = sourceImg.height();
const svg1 = textToSVG.getSVG(' - App', {
x: 0,
y: 0,
fontSize: 24,
anchor: 'top',
});
const svg2 = textToSVG.getSVG(' ', {
x: 0,
y: 0,
fontSize: 16,
anchor: 'top',
});
const svg3 = textToSVG.getSVG(' ', {
x: 0,
y: 0,
fontSize: 32,
anchor: 'top',
});
Promise.coroutine(function* generateInvitationCard() {
const targetImg1Path = './i/1.png';
const targetImg2Path = './i/2.png';
const targetImg3Path = './i/3.png';
const targetImg4Path = './i/qrcode.jpg';
const [buffer1, buffer2, buffer3] = yield Promise.all([
svg2png(svg1),
svg2png(svg2),
svg2png(svg3),
]);
yield Promise.all([
fs.writeFileAsync(targetImg1Path, buffer1),
fs.writeFileAsync(targetImg2Path, buffer2),
fs.writeFileAsync(targetImg3Path, buffer3),
]);
const target1Img = images(targetImg1Path);
const t1Width = target1Img.width();
const t1Height = target1Img.height();
const offsetX1 = (sWidth - t1Width) / 2;
const offsetY1 = 200;
const target2Img = images(targetImg2Path);
const t2Width = target2Img.width();
const t2Height = target2Img.height();
const offsetX2 = (sWidth - t2Width) / 2;
const offsetY2 = 240;
const target3Img = images(targetImg3Path);
const t3Width = target3Img.width();
const t3Height = target3Img.height();
const offsetX3 = (sWidth - t3Width) / 2;
const offsetY3 = 270;
const target4Img = images(targetImg4Path);
const t4Width = target4Img.width();
const t4Height = target4Img.height();
const offsetX4 = (sWidth - t4Width) / 2;
const offsetY4 = 400;
images(sourceImg)
.draw(target1Img, offsetX1, offsetY1)
.draw(target2Img, offsetX2, offsetY2)
.draw(target3Img, offsetX3, offsetY3)
.draw(target4Img, offsetX4, offsetY4)
.save('./i/card.png', { quality : 90 });
})().catch(e => console.error(e));
주의 사항text-to-svg 는 중국어 글꼴 지원 이 필요 합 니 다.그렇지 않 으 면 중국어 가 혼 란 스 러 워 집 니 다.
제 낡은 컴퓨터 에서 한 번 실행 하 는 데 500 여 밀리초 밖 에 걸 리 지 않 았 습 니 다.충분 하 다 고 생각 합 니 다.공유 해서 여러분 께 참고 가 되 었 으 면 좋 겠 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Express.js에서 오류를 처리하는 간단한 방법Express에서 오류를 처리하는 여러 가지 방법이 있습니다. 이를 수행하는 일반적인 방법은 기본 익스프레스 미들웨어를 사용하는 것입니다. 또 다른 방법은 컨트롤러 내부의 오류를 처리하는 것입니다. 이러한 처리 방식...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.