-
Notifications
You must be signed in to change notification settings - Fork 608
/
Copy pathdocs-examples-imageoutput.cpp
86 lines (68 loc) · 2.33 KB
/
docs-examples-imageoutput.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
// Copyright Contributors to the OpenImageIO project.
// SPDX-License-Identifier: Apache-2.0
// https://github.com/AcademySoftwareFoundation/OpenImageIO
///////////////////////////////////////////////////////////////////////////
// This file contains code examples from the ImageOutput chapter of the
// main OpenImageIO documentation.
//
// To add an additional test, replicate the section below. Change
// "example1" to a helpful short name that identifies the example.
// BEGIN-imageoutput-example1
#include <OpenImageIO/imageio.h>
using namespace OIIO;
void example1()
{
//
// Example code fragment from the docs goes here.
//
// It probably should generate either some text output (which will show up
// in "out.txt" that captures each test's output), or it should produce a
// (small) image file that can be compared against a reference image that
// goes in the ref/ subdirectory of this test.
//
}
// END-imageoutput-example1
//
///////////////////////////////////////////////////////////////////////////
// BEGIN-imageoutput-simple
#include <OpenImageIO/imageio.h>
using namespace OIIO;
void simple_write()
{
const char* filename = "simple.tif";
const int xres = 320, yres = 240, channels = 3;
unsigned char pixels[xres * yres * channels] = { 0 };
std::unique_ptr<ImageOutput> out = ImageOutput::create(filename);
if (!out)
return; // error
ImageSpec spec(xres, yres, channels, TypeDesc::UINT8);
out->open(filename, spec);
out->write_image(TypeDesc::UINT8, pixels);
out->close();
}
// END-imageoutput-simple
void scanlines_write()
{
const char* filename = "scanlines.tif";
const int xres = 320, yres = 240, channels = 3;
std::unique_ptr<ImageOutput> out = ImageOutput::create(filename);
if (!out)
return; // error
ImageSpec spec(xres, yres, channels, TypeDesc::UINT8);
// BEGIN-imageoutput-scanlines
unsigned char scanline[xres * channels] = { 0 };
out->open (filename, spec);
int z = 0; // Always zero for 2D images
for (int y = 0; y < yres; ++y) {
// ... generate data in scanline[0..xres*channels-1] ...
out->write_scanline (y, z, TypeDesc::UINT8, scanline);
}
out->close();
// END-imageoutput-scanlines
}
int main(int /*argc*/, char** /*argv*/)
{
simple_write();
scanlines_write();
return 0;
}