26 int main(
int argc,
char** argv)
28 Console::println(
string(
"imageprocessor ") + Version::getVersion());
29 Console::println(Version::getCopyright());
34 Console::println(
"Usage: imageprocessor input.png output.png");
35 Application::exit(Application::EXITCODE_FAILURE);
39 auto inputImageFileName = string(argv[1]);
40 auto outputImageFileName = string(argv[2]);
44 Console::println(
"Loading image: " + inputImageFileName);
45 auto image = TextureReader::read(
46 FileSystem::getInstance()->getPathName(inputImageFileName),
47 FileSystem::getInstance()->getFileName(inputImageFileName)
51 Console::println(
"Processing image");
55 auto bytesPerPixel = image->getRGBDepthBitsPerPixel() / 8;
56 auto imageTextureData = image->getRGBTextureData();
57 for (
auto y = 0; y < image->getTextureHeight(); y++) {
58 for (
auto x = 0; x < image->getTextureWidth(); x++) {
59 auto offset = y * bytesPerPixel * image->getTextureWidth() + x * bytesPerPixel;
60 auto red = imageTextureData.get(offset + 0);
61 auto green = imageTextureData.get(offset + 1);
62 auto blue = imageTextureData.get(offset + 2);
63 auto alpha = bytesPerPixel == 4?imageTextureData.get(offset + 3):0xff;
65 if (red < 5 && green < 5 && blue < 5) {
73 imageTextureData.getBuffer()[offset + 0] = red;
74 imageTextureData.getBuffer()[offset + 1] = green;
75 imageTextureData.getBuffer()[offset + 2] = blue;
76 if (bytesPerPixel == 4) {
77 imageTextureData.getBuffer()[offset + 3] = alpha;
83 image->setTextureData(Texture::getRGBFormatByPixelBitsPerPixel(image->getRGBDepthBitsPerPixel()), imageTextureData);
86 auto smoothedTexture = TextureReader::smooth(image);
87 image->releaseReference();
88 image = smoothedTexture;
91 Console::println(
"Saving image: " + outputImageFileName);
92 PNGTextureWriter::write(
94 FileSystem::getInstance()->getPathName(outputImageFileName),
95 FileSystem::getInstance()->getFileName(outputImageFileName),
101 image->releaseReference();
103 Console::println(
"An error occurred: " +
string(exception.what()));
107 Application::exit(Application::EXITCODE_SUCCESS);
Application base class, please make sure to allocate application on heap to have correct application ...
PNG texture writer class.
File system singleton class.
int main(int argc, char **argv)
std::exception Exception
Exception base class.