在使用处理的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());
谢谢各位的意见!!
最佳答案
我很难在类似的环境中测试您的代码。但是我认为问题是在绘制过程之后调用了loadPixels()
,而不是updatePixels()
。
PApplet p = createPApplet();
p.loadPixels();
// here I do some drawing with p.point()
p.updatePixels();
试试这个版本。