2012-01-19 25 views
7

Đó là câu hỏi, tôi đã thấy nó gây ra SVG-Salamander là đủ nhỏ để dự án của tôi. Nhưng tôi không biết nếu tôi có thể sử dụng nó cho rằng không phải làm thế nào để làm điều đó.Tôi có thể sử dụng SVG Salamander để rasterize SVG thành các tệp của PNG không? (và làm thế nào tôi có thể làm điều đó?)

Bất kỳ ý tưởng nào?

Nếu tôi không thể, bạn có biết bất kỳ SVG nhỏ nào khác về PNG rasterizer trong java không?

cảm ơn tất cả.

Tôi đã sử dụng mã này:

public static void main(String[] args) throws IOException, SVGException { 
    // TODO Auto-generated method stub 

    File f = new File("./src/game_scheme.svg"); 
    SVGUniverse svgUniverse = new SVGUniverse(); 
    SVGDiagram diagram = svgUniverse.getDiagram(svgUniverse.loadSVG(f.toURL())); 
    BufferedImage bi = new BufferedImage(320, 240, BufferedImage.TYPE_INT_ARGB); 
    Graphics2D ig2 = bi.createGraphics(); 
    diagram.render(ig2); 
    ImageIO.write(bi, "PNG", new File("./yourImageName.png")); 

} 

Nhưng hình ảnh không được mịn :(, bất kỳ ý tưởng

+0

Tôi đang gặp phải vấn đề về simuilar, hình ảnh png không mượt mà. Có cách nào để khắc phục nó? – ayachama

Trả lời

3

Có, có thể Tất cả bạn cần làm là tải tài liệu SVG của bạn sử dụng. SVG Salamander, tạo ra một BufferedImage mà bạn muốn viết, tạo ra một bối cảnh Graphics2D từ BufferedImage của bạn, và sau đó gọi phương thức render() trên SVGDiagram để vẽ đến hình ảnh của bạn. Nó sẽ xử lý tất cả các bên trong Salamander cho y Bạn có thể xử lý tài liệu SVG của mình như một biểu tượng Swing thông thường.

Nếu bạn dự định chuyển đổi nhiều tệp SVG thành hình ảnh trên dòng lệnh, cũng có tác vụ Ant cho phép bạn chuyển đổi SVG thành hình ảnh từ tập lệnh kiến.

SVG Salamander tài liệu sử dụng: http://svgsalamander.java.net/docs/use.html

Một bản demo đơn giản sử dụng SVG Salamander với Swing: http://svgsalamander.java.net/docs/exampleCode/SVGIODemo.html

+0

Tôi không thể sử dụng nguyên nhân Ant tôi sẽ hiển thị chúng thành .png khi ứng dụng android được cài đặt. Nhưng cảm ơn cho thông tin, tôi sẽ cố gắng sau đó tôi sẽ cho bạn biết về kết quả. –

3

Nếu bạn thấy các cạnh lởm chởm, bạn có thể khắc phục điều đó bằng cách thêm một card đồ họa render gợi ý.

Ngoài ra, bạn nên gọi vứt bỏ() khi bạn đã hoàn thành ngữ cảnh đồ họa của mình.

Graphics2D ig2 = bi.createGraphics(); 
ig2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); 
diagram.render(ig2); 
ig2.dispose(); 

ImageIO.write(bi, "PNG", new File("./yourImageName.png")); 
+0

Tôi sẽ kiểm tra mã của bạn đêm nay. Salamander là một lib rất tuyệt vời, cảm ơn vì nó. –

+0

Tôi đã thử nghiệm và nó hiển thị độc đáo. Bạn là một nhà vô địch thx cho việc này. –

+0

Tệp SVG của tôi có nhiều chi tiết trong đó. Nó có các văn bản nhỏ trông mờ và không thể đọc được khi chuyển đổi sang PNG. – ayachama

Các vấn đề liên quan