Создание BufferedImage из содержимого PApplet - PullRequest
1 голос
/ 12 января 2011

В моем Java-сервлете, который использует Processing, я хочу, чтобы он отображал содержимое PApplet в BufferedImage и создавал из него изображение PNG. Как создать 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());

Спасибо всем за ваш вклад !!

1 Ответ

0 голосов
/ 13 января 2011

Мне сложно протестировать ваш код в аналогичной среде;но я думаю, что проблема в том, что вы вызываете loadPixels() после процесса рисования, а не updatePixels().

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

Дайте эту версию попробовать.

...