2016-06-27 3 views
0

파일에서 SVG를로드 한 다음 카이로 캔버스로 렌더링하는 방법이 있습니까? 이상적으로 뭔가 같은 :줄리아의 파일을 카이로 캔버스로 SVG 렌더링

image = read_from_svg("my.svg") 
set_source_surface(cr, image, 0, 0) 
paint(cr) 
+2

[카이로와 부하 SVG]의 가능한 중복 (http://stackoverflow.com/questions/21152068/load-svg-with-cairo) – oldtechaa

+0

또한보십시오으로 https : // 유래. com/questions/13709243/create-cairo-path-from-svg-file? rq = 1 – oldtechaa

+0

의견을 보내 주셔서 감사합니다. Julia atm에서 내장 된 방법이없는 것 같습니다. C++ 바인딩을 통해 librsvg를 호출 할 수 있습니다. CairoSVG는 set_source_surface()를 호출 할 수있는 내부 객체를 제공하지 않는 것처럼 보입니다. 외부에서 PNG로 변환 한 다음로드하려고하지 않습니다. – Mageek

답변

1

rsvg 라이브러리를 래핑 Rsvg.jl 패키지가있다. 패키지는 Pkg.add("Rsvg")과 함께 설치할 수 있습니다. 네이티브 Cairo 및 Rsvg 라이브러리의 설치 문제를 해결해야 할 수도 있습니다. 패키지는 자동으로이 작업을 시도하지만 여러 가지 구성을 기반으로하는 어려운 문제입니다.

해당 패키지를 사용하면 원하는 것을 수행 할 수 있습니다. 패키지의 README에서 :

using Rsvg 
using Cairo 

filename_in = "a4.svg" 

r = Rsvg.handle_new_from_file(filename_in); 
d = Rsvg.handle_get_dimensions(r); 
cs = Cairo.CairoImageSurface(d.width,d.height,Cairo.FORMAT_ARGB32); 
c = Cairo.CairoContext(cs); 
Rsvg.handle_render_cairo(c,r);