2014-05-21 2 views
2

PNG를 가져 와서 일부 HTML과 나란히 놓은 다음 PNG로 다시 렌더링 할 라이브러리를 찾고 있습니다.Node.js의 PNG 서버 측 HTML 페이지

예제 코드 :

var renderingTool = require('renderingTool'); 
var newPng = renderingTool.pngoutBuffer('' + 
    '<div style="border-left: 12px solid red">' + 
    '<img src="src="data:image/png;base64,iVBORw0KGgoAAA..." />' + 
    '</div>' 
); 

이, PNG 이미지을 왼쪽에 빨간색 테두리를 추가하고 PNG로 다시 렌더링합니다.

Phantom.js 및 gm (GraphicsMagick 사용)에 대해 알고 있습니다. 나는 Phantom으로 이것을하는 방법을 이해할 수 없었고 GM의 경우 16px x 16px 이미지 (이미지 당 250ms)조차도 매우 느립니다. 나는 이것을하기 위해 ~ 10ms로 내려 가기를 희망한다.

EDIT :

참고 : I 원본 이미지 (상기에서 I는베이스 64로 변환)하는 버퍼 메모리로서 이미 표시하도록 상기 코드를 편집.

또한 URL 대신 URL 대신 가상 코드를 사용할 수 있습니까? 내가 본 모든 예제는 URL을 가지고 있지만 실제 코드를 제공하는 것이 훨씬 더 좋을 것입니다.

+0

HTML 렌더링은 매우 복잡합니다. 당신은 간단하고 빠른 해결책을 찾지 않을 것입니다. – SLaks

+0

당신은 (최소한은 아닐지라도) phantomjs로 직접 10ms를 달성하지는 못할 것입니다. 그리고'phantom-node '는 phantomj를 실행하기 위해 child_process와 네트워킹 부두를 사용하기 때문에 더 느려질 것입니다. –

답변

3

저는 광역 phantomJS가 광범위하게 사용할 수있는 최선의 방법이라고 확신합니다.

나는 이것을하기 위해 ~ 10ms로 내려 가고 싶습니다.

난이도 (꽤 빠르고 가까운 서버 ~ 250 밀리를) 크기의 적어도 한 순서에 따라 10ms의를 초과 할 원격 이미지를 다운로드 할 수 phantomJS에 대한 대기 시간을 주어 실현 불가능하고 많은 3 등 주문 생각하는 느린/먼 서버의 크기 빛의 속도로 인해 네트워크 요청에 대한 최소 지연 시간을 염두에 두십시오.

테두리를 추가하거나 자르기, 회전, 텍스트 추가 등과 같은 간단한 조작 만 수행하려는 경우 gm 만 있으면 phantomJS보다 훨씬 빠르지 만 실제로 병목 현상은 실제로 발생할 가능성이 있습니다 웹에서 원격 이미지를 다운로드합니다. 이미 이미지 파일을 서버의 파일 시스템에 로컬로 가지고 있다면, gm 수정 만하면 대기 시간의 야망을 알 수 있습니다.

+0

어쩌면 내가 분명히해야 할 것은 내 서버에 IN MEMORY가 버퍼로 가지고있는 원본 이미지입니다.이 버퍼는 base64로 변환 할 수 있습니다. 따라서 이미지에 대한 액세스는 10ms보다 훨씬 적어야합니다. 나는 내 질문을 편집 할 것이다. –

+0

질문이 구체적 일수록 더 완벽하게/정확하게 답변 할 수 있습니다. 테두리를 추가하는 것만으로도 gm이 직접 할 수있는 것입니다. 노드 모듈은 외부 gm 하위 프로세스의 래퍼 일 뿐이므로 혼합 과정에서 child_process 및 파일 시스템 지연이 발생합니다. –

+0

대기 시간/자식 프로세스는 이미 메모리에 있어야하는 노드 모듈 인 Phantom을 사용하여 피하려고하는 것입니다. 그러나 필자가 지적했듯이 URL 대신 Phantom HTML 코드를 제공하는 방법을 알지 못합니다. –