문제

jpanel의 이미지를 벡터 그래픽 파일로 내보내고 화면보다 높은 화면 해상도로 편집하고 인쇄 할 수 있습니다. 본질적으로 나는 그것을 원한다 paint() 드로잉 명령을 벡터 그래픽 파일에 저장하는 대상 그래픽으로 호출되는 기능.

이것을하는 좋은 방법은 무엇입니까? 어떤 라이브러리가 권장됩니까? 어떤 벡터 형식이 가장 좋을까요?

도움이 되었습니까?

해결책

살펴보십시오 Java EPS Graphics2d 패키지.

많은 Java 프로그램은 Graphics2D를 사용하여 화면에 물건을 그리며 출력을 PNG 또는 JPEG 파일로 저장하기는 쉽지만 문서 나 용지에 포함 된 EPS로 내보내기는 어렵습니다.

이 패키지는 Epsgraphics2D 객체를 그래픽 2D 객체 인 것처럼 사용할 수 있기 때문에 전체 프로세스를 매우 쉽게 만듭니다. 유일한 차이점은 구현 된 모든 메소드가 EPS 출력을 생성한다는 것입니다. 즉, JEPG 및 PNG 파일과 같은 픽셀 기반 이미지를 조정할 때 볼 수있는 들쭉날쭉 한 모서리를 이끌어 내지 않고도 그리기 다이어그램을 크기를 조정할 수 있습니다.

다른 팁

아파치 납결 염색법 그래픽 2D 객체의 특수 구현에 페인트 한 다음 확장 가능한 벡터 그래픽 (.SVG) 파일로 내보낼 수 있습니다. 그런 다음 SVG 지원 브라우저를 사용하여보고/프로세스/인쇄 할 수 있습니다 (Firefox는 ISTR, IE 및 다른 사람들이 플러그인을 사용할 수 있습니다).

참조 svggraphics2d 객체 (프로세스 문서화 여기)

Pierre가 언급 한 Java EPS는 좋아 보이지만 그렇지 않으면보고 싶을 수도 있습니다. Freehep 벡터 그래픽. High Energy Physics Field에서 Java 재사용을 허용하도록 작성된 Graphics2d의 구현을 통해 수행 된 벡터 그래픽 패키지가 포함되어 있습니다. 우리는 그것을 몇 년 동안 EPS를 매우 성공적으로 수출하는 데 사용했습니다.

나는 추천 할 수있다 VectorGraphics2d 라이브러리 (LGPL). 그래픽 2D의 모든 기능을 지원하지는 않지만 프로젝트에 성공적으로 사용했습니다. 다양한 벡터 파일 형식에 대해 java.awt.graphics2d의 구현을 제공합니다. 모든 페인트 작업을 EPS, SVG 또는 PDF 파일로 내보내는 것입니다.

동일한 요구 사항을 가진 사람들을위한 추가 라이브러리 :

이 GPLV3과 광범위한 사용을 통해 잘 테스트되었습니다. JFREECHART 그리고 올슨 차트.

FreeHep은 더 이상 유지되지 않은 것처럼 보이지만 버그와 포럼 페이지가 사라졌지만 잘 작동하는 것 같습니다. 소수의 라인만으로 구성 요소를 다양한 확장 가능하고 일반 이미지 형식으로 저장할 수있는 팝업 대화 상자가 나타납니다. 우리는 알파 채널, 회전 된 텍스트, 곡선으로 경계가있는 영역을 사용하여 도전적인 이미지를 가지고 있으며 vectorgraphics2d로 완벽하게 저장했습니다.

내가 지금까지 본 유일한 문제는 JPEG Save에서 내 모든 이미지에 대해 검은 색으로 나옵니다. PNG가 작동하고 모든 벡터 모드가 작동한다는 점을 감안할 때 이것은 우리에게 그다지 중요하지 않지만 일부는 문제가 될 것이라고 확신합니다.

이 모든 모드를 저장하기 위해이 많은 코드를 정확히 추가해야했습니다.

public static void showImage(Component comp) 
{
    try
    {
        ExportDialog export = new ExportDialog();
        export.showExportDialog( null, "Export view as ...", comp, "export" );
        System.err.println("Image save complete");

    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
}

추가 해야하는 도서관 항아리도 많이 있습니다.

낮은 레벨 Java API가 래스터 (픽셀) 측면에서 작동하며 벡터 형식으로 저장되지 않기 때문에 기본적으로 직접 불가능합니다. (내가 의미하는 바를 확인하려면 java.awt.graphics의 API를 확인하십시오).

래스터를 벡터 형식으로 변환하는 일반적인 프로그램이 있습니다. 이것은 빠른 검색에서 찾은 것입니다.http://autotrace.sourceforge.net/index.html

따라서 이러한 프로그램을 사용하면 문제를 두 가지 작은 문제로 나눌 수 있습니다.

  1. jpanel을 비트 맵 또는 파일로 변환합니다 (http://www.jguru.com/faq/view.jsp?eid=242020)
  2. 파일에서 자동 구역을 실행하십시오.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top