GLUTで表示中の画面をキャプチャする
前回C言語で書いたコードをPyOpenGLとPILライブラリを使って書いてみた。PILを使うと前回と異なりpng形式だけではなくbmp,jpeg,tiff形式などPILの対応する形式であれば何でも保存できる。
使い方は同じで、コードをコピペして適当な場所でcapture関数を呼び出せば使える。
やっぱりpython使うと簡潔でいいなあ。
from PIL import Image from PIL import ImageOps def capture(): width = glutGet(GLUT_WINDOW_WIDTH) height = glutGet(GLUT_WINDOW_HEIGHT) # キャプチャ glReadBuffer(GL_FRONT) glPixelStorei(GL_UNPACK_ALIGNMENT, 1) data = glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE) # 画像を保存 image = Image.fromstring("RGBA", (width, height), data) image = ImageOps.flip(image) # 上下反転 image.save("output.png") image.save("output.jpg") image.save("output.tiff") #image.save("output.bmp") # RGBAは不可