소프트웨어를 사용하여 PNG를 SVG로 변환하는 방법


29

MarvinSketch를 사용하여 만든 SVG 화학 구조 를 완전히 자르고 싶습니다 ( 이 질문 참조 ). 나는 해결책을 생각했을 것입니다. MarvinSketch를 사용하여 큰 PNG 파일을 만든 다음 김프 를 사용하여 자르고 PNG를 SVG 로 변환합니다 . 따라서 고품질 PNG-> SVG 변환을 위해 Ubuntu에 설치할 수있는 무료 소프트웨어 (항상 멀웨어가 의심되는 온라인 변환기를 사용하는 것을 좋아하지 않음)를 아는 사람이 있는지 알고 싶습니다.


1
좋아, 그 코드는 어떻게 생겼습니까? 나는 당신이 말한대로 내 지식에서 코드를 뒤집어 보았습니다 (코드 멍청한 놈입니다). 이것은 내가 사용한 코드입니다.`#{INKSCAPE_PATH} -z -f #{Guanidine.png} -w #{width} -j -e #{Guanidine.svg}
BH2017

1
다음 cd ~/Documents/Chem Structures/은 파일이있는 디렉토리입니다.
BH2017

1
sudo apt-get install imagemagick 그리고이 스크립트를 #! / bin / bash 저장하는 동안 [$ # -gt 0]; do == 1 png_file = echo "$picture" | sed 's/\.\w*$/.png/' / usr / bin / convert "$ picture"png : "$ png_file"~ / .local / share / nautilus / scripts에서 shift를 실행하고 실행 가능하도록 설정 한 다음 마우스 오른쪽 버튼을 클릭 한 다음 스크립팅하십시오. 당신은 아래에이 스크립트 저장
zeitue

1
알았어, 내가 멍청한 놈이라서 내가 이해 한 모든 것이 더 잘 설명되어 있어야한다고sudo apt-get install imagemagick
BH2017

2
그럼에도 불구하고 SVG와 같은 벡터 그래픽과 PNG와 같은 픽셀 그래픽 사이에는 근본적인 차이가 있음을 알아야합니다. 벡터 정보를 잃어버린 후에는이를 복구 할 수있는 방법이 없습니다. 따라서 PNG에서 SVG로 "변환"하더라도 기본적으로 SVG 벡터 그래픽 파일 내에 픽셀 그래픽 (base64 인코딩)을 포함시키는 것 외에는 아무것도하지 않습니다. convert명령은 더 악화입니다 : 그것은 무엇을 리드 매우 큰 파일 크기에 픽셀 그래픽의 모든 픽셀에 대한 원을 배치합니다. 따라서 SVG 파일을 직접 자르려고합니다.
soulsource

답변:


24

따라서 래스터 - 벡터 그래픽 변환기 / 추적기 를 찾고 있습니다. potrace& autotrace모두 우분투 저장소에 있습니다. 내 자신은 potrace이전에 기본 옵션으로 멋진 결과를 얻었습니다. 내가 기억하는 것처럼 두 도구는 압축 형식 을 입력으로 지원하지 않고 비트 맵 이미지 만 지원 합니다.

Potrace 예제 참조

Potrace : 비트 맵을 벡터 그래픽으로 변환하는 유틸리티

potrace는 비트 맵을 추적하기위한 유틸리티로, 비트 맵을 부드럽고 확장 가능한 이미지로 변환합니다. 입력은 비트 맵 (PBM, PGM, PPM 또는 BMP 형식)이며 기본 출력은 캡슐화 된 PostScript 파일 (EPS)입니다. 일반적으로 회사 나 대학 로고, 필기 메모 등과 같은 스캔 된 데이터로 EPS 파일을 만드는 데 사용됩니다. 결과 이미지는 비트 맵처럼 "재기"가 아니라 매끄 럽습니다. 그런 다음 어떤 해상도로도 렌더링 할 수 있습니다.

명령:

potrace -s inputfile

AutoTrace : 비트 맵-벡터 그래픽 변환기

AutoTrace는 비트 맵을 벡터 그래픽으로 변환하는 프로그램입니다. AutoTrace 프로젝트의 목표는 CorelTrace 또는 Adobe Streamline과 유사한 무료로 제공되는 응용 프로그램을 개발하는 것입니다. 어떤 측면에서는 이미 더 좋습니다. 원래 김프 용 플러그인으로 생성 된 AutoTrace는 이제 독립형 프로그램입니다.

명령:

autotrace -output-format svg inputfile

참고 문헌 :

  • man potrace
  • man autotrace

최신 정보


1
입력 파일 autotrace -vector svg inputfile을 fenfluramine.png로 변경 한 후 실행 했지만 작동하지 않았으며 출력 형식을 svg로 변경하지도 않았습니다. 설치했습니다.
BH2017

1
나는 potrace -s inputfile(입력 파일이 fenfluramine.png 인 상태에서) 다시 실행 했으며 다음과 같은 오류가 발생했습니다.potrace: /home/fusion809/Documents/Chem Structures/Fenfluramine.png: file format not recognized Possible input file formats are: pnm (pbm, pgm, ppm), bmp.
BH2017

1
@BrentonHorne, PNG 대신 PNM 또는 BMP 이미지를 만들어야합니다. 두 도구 모두 압축 형식을 입력 (PNG, JPEG ...)으로 지원하지 않고 비트 맵 이미지 (PNM, BMP, ...) 만 지원합니다. PNG 이외의 다른 파일을 내보낼 수 없으면 1st에서 BMP로 변환 해보십시오.
user.dz

1
그럼 당신은 내 질문에 대답하지 않았습니다. MarvinSketch는 BMP로 내보낼 수 있지만 배경이 투명 하지 않기 때문에 우선 PNG 형식을 제안했습니다. PNM을 할 수 없습니다.
BH2017

2
아하, 그것은 효과가 있었다. 감사. 나는 BMP가 투명하지 않았기 때문에 어떤 결과도 그렇지 않을 것이라고 생각했습니다.
BH2017

19

Inkscape에는 멋진 자동 추적 도구가 있습니다.

  1. 다음을 사용하여 Inkscape 설치 sudo apt-get install inkscape
  2. 이미지 가져 오기
  3. 이미지를 선택하십시오
  4. 메뉴 표시 줄에서 Path -> Trace Bitmap Item
  5. 필요에 따라 추적 매개 변수를 조정하십시오.

자세한 정보 는 추적 학습서 를 확인하십시오.

추적 옵션에 익숙해지면 Inkscape의 CLI를 사용하여 자동화 할 수 있습니다 .


5
+1 감사합니다. potrace언급 한 참조에서 언급 한 것처럼 Inkscape는 GUI에 통합 된 기능을 가지고 있습니다.
user.dz

5
potrace가 .png 가져 오기를 지원하지 않기 때문에 정답이며 변환과 관련하여 투명성 등의 문제가 발생하기 쉽습니다.
brianlmerritt

1
또한 Gimp는 potrace가 놓친 것처럼 컬러 이미지를 추적 할 수 있습니다.
미소

8

convert터미널에서 다음 명령을 사용하십시오 .

예를 들면 다음과 같습니다. convert EXAMPLE.png EXAMPLE.svg

맨 페이지의 정보는 다음과 같습니다.

convert(1) - Linux man page

Name

convert - convert between image formats as well as resize an image, blur, crop, despeckle, dither, draw on, flip, join, re-sample, and much more.

Synopsis

convert [input-options] input-file [output-options] output-file


3
벡터 이미지로 변환하는 대신 SVG에 래스터 이미지가 포함됩니다.
bk138

1
대단히 감사합니다 ... 이것은 내가 찾던 것입니다 ...
Dan Ortega

2

방금 놀라운 결과로 김프를 사용했습니다. 나는 처음 potrace를 사용했지만 많은 왜곡이있는 이미지는 모두 검은 색이었습니다. 어쩌면 제대로 사용하지 않았지만 "eps"(file_name.eps)로 내보내는 김프로 시도했을 때 모두 끝났습니다. 300으로 값을 설정하여 해상도를 설정하기 만하면됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.