官术网_书友最值得收藏!

Screen grabbing

Sometimes it is desirable to save the picture drawn by your project in the file. You can do it using tools of your operating system, but it's more comfortable to do it right in your project. So let's see how to save the contents of your project screen to an image file.

For such purposes, we need to use the ofImage class for working with images. Though the class is considered in Chapter 4, Images and Textures, for screen grabbing, it is just enough to understand that the ofImage object holds an image.

The following code saves the current screen to file on the pressing of the Space bar. It should be added to the testApp::keyPressed() function as follows:

//Grab the screen image to file
if ( key == ' ' ) {
  ofImage image;  //Declare image object

  //Grab contents of the screen
  image.grabScreen( 0, 0, ofGetWidth(), ofGetHeight() );  

  image.saveImage( "screen.png" );  //Save image to file
}

The parameters of the image.grabScreen() function specify the rectangle of the grabbing. In our case, it is the whole screen of the project.

This code is implemented in the 02-2D/06-Spirals example. Run it and press the Space bar; the contents of the screen will be saved to the bin/data/screen.png file in your project's folder.

Tip

The PNG files are small and have high quality, so we often use these for screen grabbing. But, writing to a PNG file takes some time because the image has to be compressed. It takes up to several seconds, depending on the CPU and image size. So if you need to save images fast, use the BMP file format.

image.saveImage( "screen.bmp" );
主站蜘蛛池模板: 扎赉特旗| 平谷区| 涞源县| 沽源县| 方城县| 兰州市| 安阳县| 泽普县| 石首市| 乌苏市| 惠安县| 宜君县| 庆阳市| 富蕴县| 嘉义市| 瓦房店市| 浠水县| 弋阳县| 社旗县| 焦作市| 莲花县| 乳山市| 蕉岭县| 大田县| 清徐县| 冕宁县| 高安市| 梅河口市| 陆丰市| 汝州市| 洞头县| 内丘县| 柳江县| 涡阳县| 长顺县| 长顺县| 沭阳县| 射阳县| 荣成市| 古蔺县| 金昌市|