// This may look like C code, but it is really -*- C++ -*- // // Copyright Bob Friesenhahn, 1999, 2000, 2003 // Copyright Dirk Lemstra 2014 // // Test STL readImages and writeImages functions and test // image format when reading/writing. // #include <Magick++.h> #include <string> #include <iostream> #include <list> #include <vector> using namespace std; using namespace Magick; int main(int,char ** argv) { int failures=0; string srcdir(""); // Initialize ImageMagick install location for Windows InitializeMagick(*argv); try { if (getenv("SRCDIR") != 0) srcdir=getenv("SRCDIR"); // // Test readImages and writeImages // list<Image> first; readImages(&first,srcdir + "test_image_anim.miff"); if (first.size() != 6) { ++failures; cout << "Line: " << __LINE__ << " Read images failed, number of frames is " << first.size() << " rather than 6 as expected." << endl; } writeImages(first.begin(),first.end(),"testmagick_anim_out.miff"); list<Image> second; readImages(&second,"testmagick_anim_out.miff"); list<Image>::iterator firstIter = first.begin(); list<Image>::iterator secondIter = second.begin(); while (firstIter != first.end() && secondIter != second.end()) { if (firstIter->scene() != secondIter->scene()) { ++failures; cout << "Line: " << __LINE__ << " Image scene: " << secondIter->scene() << " is not equal to original " << firstIter->scene() << endl; } if (firstIter->rows() != secondIter->rows()) { ++failures; cout << "Line: " << __LINE__ << " Image rows " << secondIter->rows() << " are not equal to original " << firstIter->rows() << endl; } if (firstIter->columns() != secondIter->columns()) { ++failures; cout << "Line: " << __LINE__ << " Image columns " << secondIter->columns() << " are not equal to original " << firstIter->rows() << endl; } firstIter++; secondIter++; } Image third(*first.begin()); third.write("testmagick_anim_out"); Image fourth; fourth.read("testmagick_anim_out"); if (fourth.magick() != "MIFF") { ++failures; cout << "Line: " << __LINE__ << " Image magick: " << fourth.magick() << " is not equal to MIFF" << endl; } third.write("testmagick_anim_out.ico"); fourth.read("testmagick_anim_out.ico"); if (fourth.magick() != "ICO") { ++failures; cout << "Line: " << __LINE__ << " Image magick: " << fourth.magick() << " is not equal to ICO" << endl; } third.magick("BMP"); third.write("testmagick_anim_out.ico"); fourth.read("testmagick_anim_out.ico"); if (fourth.magick() != "BMP") { ++failures; cout << "Line: " << __LINE__ << " Image magick: " << fourth.magick() << " is not equal to BMP" << endl; } third.write("PDB:testmagick_anim_out.ico"); fourth.read("testmagick_anim_out.ico"); if (fourth.magick() != "PDB") { ++failures; cout << "Line: " << __LINE__ << " Image magick: " << fourth.magick() << " is not equal to PDB" << endl; } third.magick(""); third.write("testmagick_anim_out.ico"); fourth.read("testmagick_anim_out.ico"); if (fourth.magick() != "ICO") { ++failures; cout << "Line: " << __LINE__ << " Image magick: " << fourth.magick() << " is not equal to ICO" << endl; } } catch(Exception &error_) { cout << "Caught exception: " << error_.what() << endl; return 1; } catch(exception &error_) { cout << "Caught exception: " << error_.what() << endl; return 1; } if (failures) { cout << failures << " failures" << endl; return 1; } return 0; }