コード例 #1
0
ファイル: Writer.cpp プロジェクト: mdaus/nitro
void Writer::setImageWriteHandlers(nitf::IOHandle& io, nitf::Record& record)
{
    nitf::List images = record.getImages();
    const size_t numImages = record.getNumImages();
    for (size_t ii = 0; ii < numImages; ++ii)
    {
        nitf::ImageSegment segment = images[ii];
        const size_t offset = segment.getImageOffset();
        mem::SharedPtr<nitf::WriteHandler> handler(
                new nitf::StreamIOWriteHandler(
                    io, offset, segment.getImageEnd() - offset));
        setImageWriteHandler(ii, handler);
    }
}
コード例 #2
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;



}