相关疑难解决方法(0)

来自javax.xml.transform.Transformer的漂亮打印输出,只有标准的java api(缩进和Doctype定位)

使用以下简单代码:

package test;

import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;

public class TestOutputKeys {
    public static void main(String[] args) throws TransformerException {

        // Instantiate transformer input
        Source xmlInput = new StreamSource(new StringReader(
                "<!-- Document comment --><aaa><bbb/><ccc/></aaa>"));
        StreamResult xmlOutput = new StreamResult(new StringWriter());

        // Configure transformer
        Transformer transformer = TransformerFactory.newInstance()
                .newTransformer(); // An identity transformer
        transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "testing.dtd");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.transform(xmlInput, xmlOutput);

        System.out.println(xmlOutput.getWriter().toString());
    }

}
Run Code Online (Sandbox Code Playgroud)

我得到输出:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Document comment --><!DOCTYPE aaa SYSTEM "testing.dtd">

<aaa>
<bbb/>
<ccc/>
</aaa>
Run Code Online (Sandbox Code Playgroud)

问题A:doctype标签出现在文档注释之后.是否有可能在文件评论之前出现?

问题B:如何仅使用JavaSE 5.0 …

java xml pretty-print

55
推荐指数
2
解决办法
8万
查看次数

我可以保存一个巨大的PNG,而不是整个内存吗?

我用Java保存了一个非常大的PNG(25 MB左右).问题在于,虽然它正在生成,但它使用3千兆字节的内存,这并不理想,因为它会严重降低内存不足的系统速度.

我正在使用的代码需要将一组平铺图像组合成一个图像; 换句话说,我有九张图片(PNG):

A1 A2 A3
B1 B2 B3
C1 C2 C3

需要组合成单个图像.

我正在使用的代码是这样的:

image = new BufferedImage(width, height, height, BufferedImage.TYPE_INT_ARGB_PRE);
g2d = image.createGraphics();
g2d.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);

// draw the 9 images on here at their proper positions...

// save image
g2d.dispose();
File file = getOutputFile();
ImageIO.write(image, "png", file);
Run Code Online (Sandbox Code Playgroud)

有没有办法制作和保存图像而不需要将整个图像保存在内存中?


编辑: 要绘制图像,我在循环中执行此操作:

BufferedImage tile = ImageIO.read(new File("file.png"));
g2d.drawImage(tile, x, y, w, h);

这是重复多次(通常大约25x25,但有时更多),所以如果这里甚至有一个小的内存泄漏,那可能会导致问题.

java png

15
推荐指数
2
解决办法
1329
查看次数

标签 统计

java ×2

png ×1

pretty-print ×1

xml ×1