从PApplet内容创建BufferedImage

时间:2011-01-12 18:09:50

标签: java servlets bufferedimage processing

在我使用Processing的Java servlet中,我希望它将PApplet的内容呈现给BufferedImage并从中生成PNG图像。从PApplet的内容创建BufferedImage的方法是什么?我必须创建BufferedImage并将其呈现给浏览器的代码应该是我见过的示例,但它生成的最终图像是黑色/空的。

首先我有:

private PApplet createPApplet() {
    PApplet p = new PApplet();
    p.init();
    p.noLoop();      
    p.size(486, 243);
    p.background(255);
    p.stroke(255, 255, 255);
    p.colorMode(PApplet.RGB, 256, 1, 1);
    p.translate(p.width/2, p.height/2);
 return p;

}

然后在doGet中我有

    PApplet p = createPApplet();
    p.loadPixels();
    // here I do some drawing with p.point()
    p.loadPixels();
    BufferedImage img = new BufferedImage(486, 243, BufferedImage.TYPE_INT_ARGB);
    img.setRGB(0, 0, 486, 243, p.pixels, 0, 256);
    p.draw();
    response.setHeader("Content-Type", "image/png");
    ImageIO.write(img, "PNG", response.getOutputStream());

感谢大家的投入!!

1 个答案:

答案 0 :(得分:0)

我很难在类似的环境中测试你的代码;但我认为问题是您在绘图过程后调用loadPixels()而不是updatePixels()

PApplet p = createPApplet();
p.loadPixels();
// here I do some drawing with p.point()
p.updatePixels();

试试这个版本。