Post date: Jul 10, 2014 6:30:39 AM
Processingでウインドウ内のスクショではなく,画面全体のスクリーンショットを取りたい場合は,Javaの機能をy利用する.
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.Robot;
import java.awt.Rectangle;
import java.awt.image.*;
void setup() {
PImage img=screenshot();
size(img.width/2,img.height/2);
image(img,0,0,width,height);
}
PImage screenshot() {//スクショをPImage型で保存
try {
Robot robot = new Robot();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
BufferedImage img = robot.createScreenCapture(new Rectangle(screenSize));
return b2p(img);
}
catch(Exception e) {
}
return null;
}
PImage b2p(BufferedImage img1) {//BufferedImageをPImageに変更
PImage img2 = createImage(img1.getWidth(), img1.getHeight(), ARGB);
Raster r=img1.getRaster();
for (int i = 0; i < img2.width; i++) {
for (int j = 0; j < img2.height; j++) {
int data[]=r.getPixel(i,j,new int[4]);
img2.pixels[i + j * img2.width] = img1.getRGB(i, j);
}
}
img2.updatePixels();
return img2;
}
Javaが提供してくれるのはBufferedImage型の画像なので,適当にPImage型に変換を行っておく.