コード例 #1
0
void doWrite(nitf::Record record,
             const std::string& inRootFile,
             const std::string& outFile,
             size_t bufferSize)
{
    std::cout << "Preparing to write file in " << bufferSize
              << " size blocks" << std::endl;

    nitf::BufferedWriter output(outFile, bufferSize);
    nitf::Writer writer;
    writer.prepareIO(output, record);

    int numImages = record.getHeader().getNumImages();
    nitf::ListIterator end = record.getImages().end();
    nitf::ListIterator iter = record.getImages().begin();

    for (int i = 0; i < numImages && iter != end; ++i, ++iter)
    {
        nitf::ImageSegment imseg;
        imseg = *iter;
        int nbands = imseg.getSubheader().getNumImageBands();
        nitf::ImageWriter iWriter = writer.newImageWriter(i);
        nitf::ImageSource iSource = setupBands(nbands, i, inRootFile);
        iWriter.attachSource(iSource);
    }
    writer.write();
    //output.close();

    std::cout << "Write block info: " << std::endl;
    std::cout << "------------------------------------" << std::endl;
    std::cout << "Total number of blocks written: " << output.getNumBlocksWritten() << std::endl;
    std::cout << "Of those, " << output.getNumPartialBlocksWritten() << " were less than buffer size " << bufferSize << std::endl;



}