SVG 파일에서 변환 제거


155

나는 이것을 잠시 동안 고투 해 왔으며 어디서나 답을 찾을 수없는 것 같습니다. 다음과 같은 SVG 파일이 있습니다.

<svg

   xmlns:dc="http://purl.org/dc/elements/1.1/"
   ...
   width="72.9375"
   height="58.21875"
   ...>
   ...
   <g
     ...
     transform="translate(10.75,-308.96875)"
     style="...">
     <path
       inkscape:connector-curvature="0"
       d="m -10.254587,345.43597 c 0,-1.41732 0.17692,-2.85384 0.5312502,-3.5625 0.70866,-1.41733 2.14518,-2.82259 3.5625,-3.53125 1.41733,-0.70866 2.11392,-0.70867 3.53125,0 1.41732,0.70866 ... z"
       ... />
  </g>
</svg>

transform="..."선 을 제거하고 싶지만 이미지를 배치 한 위치 (잉크 스케이프)에 그대로 유지합니다. 변환을 수동으로 제거하면 이미지가 예상대로 화면의 다른 부분으로 압축되지만 변환을 완전히 제거하고 동시에 원하는 위치에 이미지를 유지해야합니다. 경로 좌표 자체로 변환을 제거 / 평평하게하는 방법이 있습니까? (내가 처리 해야하는 유일한 변환은 매트릭스가 아닌 변환 및 스케일입니다.)



답변:


149

Inkscape에서 변형 을 제거하는 방법

  1. Inkscape에서 svg 파일 열기
  2. 편집-> XML 편집기로 이동하십시오.
  3. 레이어에서 "변환"속성을 찾아 삭제

다른 변형 속성을 만들지 않고 모든 객체를 옮기는 방법

  1. 편집-> 모든 레이어에서 모두 선택으로 이동하십시오.
  2. 객체-> 변형으로 이동

    변형 패널에서

  3. 선택을 취소 상대 이동 체크는 별도로 각 개체에 적용

  4. 필요에 따라 가로세로 값을 설정 하고 적용을 클릭 하십시오.

16
나를 위해 일했다. 경로의 실제 좌표가 업데이트되도록 객체를 변환하기 전에 객체를 그룹 해제해야합니다.
루퍼트 앵거 마이어

8
흠, 0으로 설정하고 적용을 클릭하면 변환이 XML 편집기에 다시 나타납니다.
escapedcat

7
이 작업을 수행하려면 개체 그룹을 해제해야합니다. 감사합니다.
Hai Zhang

1
나를 위해 작동하지 않았다. 변환 속성을 평면화하고 나뭇잎으로 옮길 것입니다 (실제로 모든 그룹을 해제 한 후에는 리프가됩니다). 그러나 변환 속성을 제거하지 않고 포인트 기하학에 적용하면 정사각형으로 돌아갑니다.
슈 체판 Hołyszewski

2
중요 : 위에서 설명한 설명과 같이, 개체를 그룹 해제해야 올바르게 작동합니다. 그렇지 않으면 변환 속성이 ​​자동으로 다시 설정됩니다.
Shadow

52

문제가 무엇인지 알아 냈습니다. 로버트의 대답에 의지하지 않기를 바랐지만 그것이 효과가 있다는 확인에 기쁘다! 결국 Duopixel의 대답은 실제로 가장 가깝지만 다른 일도 진행되고 있음이 밝혀졌습니다.

Inkscape 문서에서 다른 경로로 작업 할 때 기본 동작은 <svg:g.../>태그로 묶는 것 입니다. 그룹의 경로를 수정할 때 Inkscape는 자동으로 그룹에 변환을 추가하여 이러한 변경 사항을 나타냅니다. 그러나 XML 편집기를 열고 경로 밖으로 <svg:g.../>태그를 드래그하여 고유 한 <svg:path.../>태그로 만들면 Inkscape는 자유롭게 개별 포인트를 편집 할 수 있습니다. 결국 하나의 경로로만 작업했지만 그룹화 문제로 판명되었습니다! 이것이 유사한 상황에서 다른 사람들을 돕기를 바랍니다.


7
대박! 감사합니다! 그것이 바로 그 일입니다. 방금 내부 내용을 남기고 그룹 태그를 삭제하고 저장 한 다음 inkscape에서 다시 열었습니다. 물론 이미지는보기 상자 밖에 있거나 (또는 ​​그 이름이 무엇이든간에) x, y를 설정하면 고정됩니다. 얼마나 아파요? 이것을 공유해 주셔서 감사합니다!
johntrepreneur 2013

1
내 경우에는이 답변의 접근 방식과 해당 답변의 다른 접근 방식을 결합했습니다 .
quasiyoke

이것은 upvoted하고 맨 위로 가져와야합니다. 이것은 문제를 우아하게 해결하고 나를 위해 일했습니다. 캔버스 외부에 그래픽이 잘못 배치 된 경우에도 언제든지 크기를 조정할 수 있습니다 (편집> 페이지를 선택하여 페이지 크기 조정)
mandarin

48

여기에 이미지 설명을 입력하십시오

  1. Method Draw에 SVG로드 http://editor.method.ac (파일> 이미지 열기)
  2. 요소 그룹 해제 (개체> 그룹 해제 요소)이 작업을 두 번 이상 수행해야 할 수도 있습니다.
  3. 경로를 선택하십시오
  4. 경로의 방향을 바꿉니다 (오브젝트> 방향 조정 경로).
  5. 이미지 저장 (파일> 이미지 저장) 새 창에 나타나면 마우스 오른쪽 버튼을 클릭하고 "다른 이름으로 이미지 저장 ..."을 클릭하십시오.

1
Object> Reorient Paths는 없습니다. 어떤 버전을 언급하고 있습니까?
0__

1
@ 0__이 메뉴 항목이 비활성화되면 경로가 여전히 그룹 내에 있음을 의미합니다. 다시 그룹 해제하십시오.
methodofaction 2018 년

37

변환으로 경로를 다시 계산하는 Apply Transforms 라는 잉크 스케이프 확장이 있습니다 . 이것이 바로 내가 찾던 것입니다.

설치 후 확장> 경로 수정> 변형 적용 에서 메뉴를 찾을 수 있습니다 .


크레딧 : Inkscape 포럼> 제자리에 유지하면서 모든 변형 제거


이 확장 프로그램이 업데이트되었으며 적어도 내 테스트에서 rects에서도 작동합니다.
sil

물론. 이 작은 플러그인이 제공하는 힘은 측정 할 수 없습니다!
brett

23

그룹의 경우 다시 그룹화하면 작업을 빠르게 수행 할 수 있습니다. 그룹을 선택하고 Ctrl + Shift + G (그룹 해제)를 누른 다음 Ctrl + G (그룹)를 누릅니다.

예를 들어 비슷한 문제, 나선 및 별이있는 일부 객체의 경우 빠른 방법은 Ctrl + Alt + C (행정 경로)를 누르는 것입니다. 그러나 이것은 객체를 순수한 경로로 변환하고 모든 추가 속성을 제거합니다. sodipodi : cx, sodipodi : revolutions 등이 있습니다.


23

Inkscape에서 svg를 엽니 다 .

  • 그룹을 선택하십시오제거하려는 모든 변환이 포함 을
  • CTRL+를 누르십시오U (그룹 해제)를
  • CTRL+ G(다시 그룹화)를 누릅니다.

이렇게하면 그룹에 적용된 변환을 제거하고이 그룹에 포함 된 경로로 전송됩니다.


1
완전한! 이것은

14

필자의 경험에 따르면 Inkscape를 사용하는 경우 경로 요소를 약간 이동하면 (예 : 커서 키 사용) Inkscape가 변환 속성을 삭제하고 이에 따라 경로 데이터를 조정합니다. (실제로 변환 속성을 유지하려는 경우 성가시다.)

따라서 단순히 경로를 선택하고 (경로가 아닌 경로인지 확인하십시오) 오른쪽 및 왼쪽 커서 키를 누르면 완료됩니다.


1
이것은 <g> 요소에서 작동하지 않는 것 같습니다. 변환 속성을 제거하려고합니다.
Max Spring

5
어쩌면 먼저 그룹을 해제하고 나중에 다시 그룹화를 시도하십시오.
Thomas W

1
와우, 매력처럼 일했다! 이것이 정답입니다. 추가 도구가 필요없고 복잡한 단계가 없습니다. 경로가 변환 된 안에 중첩되어 있고에 변환 <g>을 유지하려는 경우 다른 답변이 작동하지 않습니다 <g>.
tomekwi

원형 도구로 만든 경로에서도 작동하지 않습니다.
sdaau

1
가장 좋은 답변입니다. 어쩌면 혼란의 원인 중 하나는 환경 설정> 변형> 변형 저장 옵션인데, 여기서 다른 곳에서는 언급하지 않았습니다. "최적화"로 설정해야합니다. 그런 다음 그룹 해제, 이동, 재 그룹화 및 Dud 변환 만 제거됩니다.
Mr5o1

13

선호도 디자이너 인 Inkscape를 선호하지만 (~ $ 40 / Mac)는 Android Vector Drawables로 작업 할 때 시간을 절약했습니다.

SVG를 열고 파일-> 내보내기-> SVG-> 더보기-> Flatten 변환이 훌륭하게 작동했습니다.

선호도 디자이너


12

SVGO 는 이것과 다른 많은 최적화를위한 훌륭한 오픈 소스 명령 행 도구입니다. 똑같이 훌륭한 온라인 웹 UI가 있습니다.SVGOMG

이 경우 관련 옵션은 moveGroupAttrsToElems(SVGOMG :) 로 그룹에서 경로 요소 Move group attrs to elementstransform속성 을 이동하고 convertPathData(SVGOMG :) Round/rewrite paths를로 병합 transform합니다 d.


1
SVGO는 믿어지지 않습니다. 특히 스택 오버 플로우는 프로그래머의 관점에서 볼 수 있으며 SVG를 포함하는 사이트를 개발하는 프로그래머에게는 최고의 솔루션입니다. 그들은 잊지 손으로 변환을 제거하기 위해 아티스트를 가르 칠 필요 (또는 직접 할 필요)과 버그 리포트를 할 때마다 점점보다 훨씬 더 배포 파이프 라인이있다 퍼팅
UTF_or_Death

3
더 이상 작동하지 않습니다. 한 번 더 잘 작동하는 것을 기억하지만 SVGO의 정확한 기능 github.com/svg/svgo/issues/624에 대한 이 문제를 참조하십시오
morewry

9

환경 설정에는 "최적화"모드가 있습니다.

Inkscape 환경 설정> 변환> 상점 변환> 최적화

transform가능한 한 속성 의 발생을 최소화해야 하지만 (그렇지는 않습니다).

어쨌든 이것은 기본적으로 켜져있는 것 같습니다.

토론 에 따르면 이 최적화 모드에 열이없는 한 가지 경우는 페이지 크기가 조정 된 경우 입니다. 그러면 translate레이어 <g>요소에 변형이 적용됩니다 . 아이들을 다른 층으로 대피시키는 것이 현재 최고의 해결책 인 것 같습니다.


2
translate모든 레이어에서 성가신 변형을 만들지 않고 페이지 크기를 조정하려면 .svg텍스트 편집기에서 파일을 열고 상단에 나타나는 높이 및 너비 속성을 조작하십시오.
fekaryInk

7

Inkscape에는 변환 데이터를 지우는 옵션이 있지만 여전히 개체의 값은 수정하지 않습니다.

Inkscape에서 개체와 '경로'메뉴, 'Simplify'를 선택하십시오. 이제 변환이 제거됩니다.


16
그러나 경로의 윤곽을 변경하고 복잡한 모양의 정점 수를 줄입니다.
찰리

1
이것은 종종 변환 이전보다 마크 업을 크게 만듭니다.
Charlie

6

이 경우 각 하위 항목의 m 값에 변환을 추가하여 -10.254587 + 10.75 = -0.504587 및 -308.96875 + 345.43597 = 36.46722가됩니다.

예제의 모든 용어는 상대적이므로 (즉, 소문자) 그게 전부입니다. M 또는 C와 같은 절대적 (대문자) 인 경우에도 조정해야합니다.

스케일의 경우 기본적으로 모든 자식 값에 스케일을 곱합니다.


나는 그렇게했지만 Inkspace XML 편집기 (또는 다른 편집기)에서 변환이 여전히 추가됩니다. 기묘한.
escapedcat

1
2 개의 하위 경로가있는 경우 C를 조정하는 방법 (예 : M 8.0 12.0 C 11.3 13.1 14.9 13.55 16.0 13.0 C 2.4 9.8 2.8 10.2 8.0 12.0 C 7.6 7.8 7.6 8.1 5.0 9.0 및 M 3.0 5.0 C 2.4 5.5 3.3 6.4 5.0 7.0 하나의 경로로 변형하고 싶습니까?
Setup

@Anton 은 기존 답변에서 다루지 않는 질문이있는 경우 질문하기 버튼을 사용합니다 . 사용 가능한 형식이 매우 제한되어 있기 때문에 의견을 묻고 답변하기가 어렵습니다.
Robert Longson

2
@RobertLongson 잘 덮었습니다. 내가 원하는 것은 "예를 들어 M 또는 C와 같은 절대 (대문자)가 있다면 그것들도 조정되어야 할 것입니다."
Setup

6
  1. 해당 요소를 선택하십시오
  2. 객체> 그룹 해제 (모든 것이 그룹 해제 될 때까지 반복합니다. 중첩 노드에 대한 XML 편집기 참조)
  3. 경로> 객체에서 경로로 (다각형을 경로로 변환)
  4. 개체> 변형> 상대 이동 선택 취소> 적용

Inkscape 0.91에서 작동하지 않는 것 같습니다. <g>transform그것이 그대로 속성 숙박. 또한 내 질문 (여기에 질문에 표시된 것과 동일)은 이미 경로입니다.
OR Mapper

SVG에 대한 링크를 붙여 넣을 수 있습니까?
Charlie

5

gInkscape 의 요소 (그룹)에서 변환 속성을 제거하려면 그룹을 최종 위치로 이동하고 그룹을 해제 한 다음 모든 요소를 ​​다시 그룹화 할 수 있습니다. 이제 새 그룹이 작성되었으며 다시 이동하지 않으면 그룹에 변환 속성이 ​​첨부되지 않습니다.


4

스케치 3에서이 작업을 수행 할 솔루션을 찾는 사람이 있다면 레이어를 선택한 다음 레이어-> 경로-> 플래 튼을 클릭하십시오.


3

그것을 발견:

  • 원하는 페이지 크기 설정 *
  • 현재 레이어에 변형이있는 경우 (XML 편집기를 사용하여 SVG 요소 아래의 최상위 그룹 임) 새 레이어를 만들고 모든 객체를 해당 레이어로 옮깁니다.
  • 그룹을 그룹 해제합니다 (YMMV는 필요하지 않을 수 있음).
  • 저장 변환을 수행하는 동안 모든 객체를 선택하고 null 변환 (예 : 100 % 100 % 배율 또는 오른쪽 화살표 + 왼쪽 화살표)을 적용하십시오. 환경 설정 / 변환에서 최적화 됨
  • 그룹을 취소해야하는 경우 이제 다시 그룹화 할 수 있습니다.
  • 사본을 최적화 된 SVG로 저장하고 원하는 숫자 정밀도를 설정하십시오.

* : 또는 최소한 페이지의 왼쪽 상단을 기준으로 필요한 곳에 개체를 배치하십시오. 불행히도 SVG 좌표는 왼쪽 상단을 참조하는 반면 Inkscape는 왼쪽 하단을 기준으로 페이지 크기를 조정합니다!


푸시 다운하려는 변환이 레이어의 <g>에 있었기 때문에 "다른 레이어로 이동"트릭이 필요했습니다. 잉크 스케이프의 좌표계는 상당히 성가신 일입니다.
돌연변이 밥

3

matrix(...)경로를 사각형과 결합한 다음 사각형의 노드를 제거하여 미러링으로 인해 변환을 제거 할 수있었습니다 . translate(...)그래도 그 부분은 남아 있었다.


이것이 내가 찾은 유일한 솔루션입니다. 새로운 깨끗한 경로와 결합한 다음 불필요한 부분을 제거하십시오.
Márton Tamás

2

필자의 경우 최적화 된 SVG로 저장하면 문제가 해결되었습니다. 따라서 잉크 스케이프에서는 다음을 사용하십시오.

파일-> 다른 이름으로 저장 ...-> 최적화 된 SVG.


BTW 문제가 무엇입니까? 모든 것을 시도한 후 여기에 왔습니다. 그러나 문제는 여전히 지속됩니다.
Sahu V Kumar

@VishalKumarSahu transformAndroid Studio에서 지원하지 않는 속성 으로 인해 내 Android 앱 아이콘 (SVG)을 자산으로 가져올 수 없습니다 .
Michał Stochmal

네, 웹에서도 마찬가지입니다. 변환은 출력에 문제를 일으키지 만 그룹으로 객체를 배열하는 동안 매우 유용합니다. 목적을 해결하기 위해 계산을해야합니다.
Sahu V Kumar

2

Inkscape를 사용하는 경우 작동합니다.

  1. 모든 것을 선택하고 그룹을 해제하십시오
  2. "최적화 된 Svg (*. svg)"로 저장

내가 시도한 모든 경우에, 이것은 모든 변환 속성을 제거합니다. 더 복잡한 SVG에서 작동하는지 확실하지 않습니다.


1

SVG 파일에서 그룹 태그를 제거하고 Inkscape (내 경우에는 0.48.3.1)에서 다시 열기 위해 여기에 게시 된 솔루션을 시도했습니다. 아아, 선택 및 변환 모드 (F1)를 사용하여 경로를 다시 변환하고 저장하면 그룹 태그가 다시 나타납니다! Inkscape는 주변 그룹 요소의 경로에 적용된 모든 변형을 저장합니다. 경로 노드 선택 도구 (F2)를 사용하지 않으면 ctrl + a를 누르고 경로의 노드를 올바른 위치로 이동하십시오. 대신이 작업을 수행하고 저장 한 후에 Inkscape가 그룹 태그를 추가하지 않았습니다.이 변환은 경로 모델에 직접 적용 되었기 때문입니다. 도움이 되었기를 바랍니다.



0

내 특정 문제는 페이지 외부에 정의 된 기호로 인해 페이지에 변환이 표시되어야한다는 것입니다.

변형없이 페이지로 심볼을 이동하려면 Inkscape에서 다음 단계를 수행해야했습니다.

  1. 기호 창을 엽니 다 (Shift + Ctrl + Y)
  2. 문서 라이브러리에서 심볼을 제거하십시오. (창에 버튼이 있습니다.)
  3. 이제 그래픽이 페이지 경계 외부의 문서에 나타납니다.
  4. 그래픽을 그룹 해제하십시오. (이것은 중요한 단계입니다!)
  5. 페이지 경계 내에서 그래픽을 이동하십시오.
  6. 그래픽을 심볼 라이브러리에 다시 추가하십시오.

0

이것은 무작위로 보이지만 다른 시도는 시도하지 않았으므로 여기에서 다른 사람을 무작위로 옮깁니다. 내 경로 중 일부에는 경로를 선택할 때만 볼 수있는 일종의 여백이 있습니다 ( 예). 다른 inkscape 파일에서 레이어를 붙여 넣고 90도 회전했을 때 이것이 생성되었다고 생각합니다. 이로 인해 셰이프의 패턴 채우기에 다른 변형 (선이 이격되어 있음)이 있습니다. 또한 정렬 객체가 예상대로 작동하지 않게 만들었습니다. @Piotr_cz가 언급 한 Apply Transform을 사용하면 변환 문제가 해결되었지만 이상한 마진이 남았습니다. Stroke on Stroke를 임의의 값으로 변경하고 다시 0으로 변경하여 실수로 제거했습니다.


0

어쨌든 나는 어떤 접근법에도 운이 없었습니다. 이 경우 <defs>귀하의 SVG 섹션은이 같은 용도 :

<g transform="matrix( *** ) "><use xlink:href="#***"/></g>

모든 사용법을 삭제하고 defs 섹션에서 모든 것을 꺼내야 할 수도 있습니다. 그런 다음 inkscape를 사용하여 올바른 방식으로 배치 한 다음 언급 된 플러그인을 사용하여 변환을 적용 할 수 있습니다. 그것이 누군가를 돕기를 바랍니다.


0

나는 몇 년 동안이 문제를 겪어왔다. 솔루션은 inkscape에서 "고정"되지 않을 경우 브라우저에서 변형을 동적으로 재생할 수 있습니다.

Inkscape 포럼 의 사용자 Mc 가이 솔루션을 제공했습니다 .

이 솔루션은 SVG 요소와 SVG 루트 요소 사이에 현재 변환을 작성한 다음 전체 변환을 기반으로 전체 BBox 정보 세트를 반환합니다.

동일한 SVG 파일의 두 부분 사이에서 브라우저 작업을 수행하려는 경우 계산과 관련된 요소를 쉽게 변경할 수 있습니다.

마지막으로 패닝 SVG 뷰포트를 실제로 가질 수 있습니다.


0

쿠분투 20.04의 Inkscape 1.0

이 스레드는 다소 오래되었지만 경험 / 솔루션을 게시하고 싶습니다. FreeCAD의 TechDrawing Workbench 용 템플릿을 만들려고 할 때이 문제가 발생했습니다. 이러한 템플릿에는 변환이 포함되어서는 안됩니다.

필자의 경우 외부 .svg 파일 (전체적으로 잉크 스케이프로 만든)에서 회사 로고를 추가해야했습니다. 이 로고에는 텍스트뿐만 아니라 그래픽도 포함되어 있습니다. 해당 로고를 템플릿에 복사 할 때 변형이 생성되어 FreeCAD에서 템플릿이 올바르게 작동하지 않습니다.

  • 첫째, www.freecadweb.org/에 제안 된이 솔루션은 저에게 효과적이지 않습니다. 그래서 웹을 검색하고이 토론을 찾았습니다.

  • 둘째, 위에서 제안한 해결책 중 어느 것도 나를 위해 효과가 없었지만 그들은 나를 올바른 길로 인도했습니다. Charlie의 대답은 가까웠지만 Object> Transform> Uncheck relative move> Apply 는 아무런 차이가 없었습니다.

나를 위해 일한 것은 다음과 같습니다.

  1. 다른 사람들이 언급했듯이 모든 것을 그룹 해제하십시오.
  2. 텍스트 객체를 경로로 변환하십시오-필자의 경우 필수적이었습니다!
  3. xml-Editor에서 기존 변환을 모두 삭제하고 관련 개체에서 발생하는 상황을 관찰하십시오. 필자의 경우 해당 요소가 위치를 변경했습니다.
  4. 이 변경 사항을 수동으로 정정하되 그룹화하지 마십시오.
  5. 일반 svg로 저장 (일반 = 최적화 또는 기타 특수 설정이 사용되지 않음)

FreeCAD에서 해당 템플릿을 사용할 때 제대로 작동합니다.


한 가지 이상한 세부 사항 : 내 솔루션에서 텍스트 요소가 내 문제라고 생각하지만 쉽지는 않습니다. 사실, 기본 문서 (로고를 복사 한 문서)에는 많은 텍스트 요소가 포함되어 있으며 어떤 요소도 변환하지 않았습니다. 따라서 "외부 소스" 텍스트 요소 의 조합 일 수 있습니다 . 나는 단지이 문제를 다른 사람들에게 암시 할뿐 관련 문제가있을 수 있습니다.

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