SVG 이미지를 3x3으로 정렬하기
https://github.com/NuNoKehai/xyzb2image
그러나 이 프로그램은 단원 하나만 그렸기 때문에 보기에 좋지 않다.
원래는 3x3의 삽화가에 배열되어 있었지만 삽화가들은 그림의 위치를 잘 조절하지 못했다.따라서 도면 셀을 추가하는 옵션은 추가하지 않으려고 합니다.
그래서 나는 벡터 이미지 3x3의 루비 스크립트를 썼다.
svg3x3.rb
require 'rubygems'
require 'cairo'
require 'rsvg2'
def read_suffix(filename)
index_period=filename.rindex(".")
suffix=filename[index_period+1..filename.size-1]
return suffix
end
def cairo_imagesurface_general(filename_image, width, height)
suffix_image=read_suffix(filename_image)
if suffix_image.casecmp("pdf")==0
surface = Cairo::PDFSurface.new(filename_image, width, height)
elsif suffix_image.casecmp("svg")==0
surface = Cairo::SVGSurface.new(filename_image, width, height)
else
format = Cairo::FORMAT_ARGB32
surface = Cairo::ImageSurface.new(format, width, height)
end
return surface
end
def context_finish_general(filename_image,context)
suffix_image=read_suffix(filename_image)
if suffix_image.casecmp("pdf")==0 || suffix_image.casecmp("svg")==0
context.target.finish
elsif suffix_image.casecmp("png")==0
context.target.write_to_png(filename_image)
end
end
filename_in=ARGV[0]
filename_out=ARGV[1]
handle_in = RSVG::Handle.new_from_file(filename_in)
width_in=handle_in.dimensions.width
height_in=handle_in.dimensions.height
surface_out = cairo_imagesurface_general(filename_out, width_in*3, height_in*3)
context_out = Cairo::Context.new(surface_out)
context_out.render_rsvg_handle(handle_in)
context_out.translate(width_in,0)
context_out.render_rsvg_handle(handle_in)
context_out.translate(width_in,0)
context_out.render_rsvg_handle(handle_in)
context_out.translate(-2*width_in,height_in)
context_out.render_rsvg_handle(handle_in)
context_out.translate(width_in,0)
context_out.render_rsvg_handle(handle_in)
context_out.translate(width_in,0)
context_out.render_rsvg_handle(handle_in)
context_out.translate(-2*width_in,height_in)
context_out.render_rsvg_handle(handle_in)
context_out.translate(width_in,0)
context_out.render_rsvg_handle(handle_in)
context_out.translate(width_in,0)
context_out.render_rsvg_handle(handle_in)
context_finish_general(filename_out,context_out)
이 스크립트를 조작하기 위해서는 루비gem의cairo와rsvg2가 필요합니다.첫 번째로 정의된 세 함수는 출력 파일의 확장자의 통용성을 높이기 위한 것이다.
사용자 공간의 원점을 어긋나게 해서 입력 그림을 그리는 것입니다.
사용 방법.
ruby svg3x3.rb input.svg output.pdf
argument로 입력 파일 이름과 출력 파일 이름을 지정합니다.입력 파일은svg 형식이어야 합니다.
결과 1
다 됐습니다.
이후 삽화가의 제한폭 마스크 등 커팅 이미지로 필요 없는 부분을 출력하면 OK.
Reference
이 문제에 관하여(SVG 이미지를 3x3으로 정렬하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nu_no_kehai/items/ee3d0661201a12e74fe1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)