2011-01-12 79 views
1

在我使用Processing的Java servlet中,我希望它將PApplet的內容渲染到BufferedImage並從中產生一個PNG圖像。從PApplet的內容創建BufferedImage有什麼方法?我必須創建BufferedImage並將其呈現給瀏覽器的代碼應該從我見過的示例中運行,但它生成的最終圖像是黑色/空白的。從PApplet內容創建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()); 

謝謝大家對您的輸入!

回答

0

我很難在類似的環境中測試您的代碼;但我認爲問題在於您在繪製過程後致電loadPixels(),而不是updatePixels()

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

給這個版本試試。