Exemplo n.º 1
0
bool ImageSegmenter::_generateJpeg( const ImageWrapper& image,
                                    const Handler& handler ) const
{
#ifdef DEFLECT_USE_LIBJPEGTURBO
    const SegmentParametersList& params = _generateSegmentParameters( image );

    // The resulting Jpeg segments
    bool result = true;
    std::vector<SegmentCompressionWrapper> tasks;
    for( SegmentParametersList::const_iterator it = params.begin();
            it != params.end(); ++it )
    {
        SegmentCompressionWrapper task( image, handler, result );
        task.segment.parameters = *it;
        tasks.push_back( task );
    }

    // create JPEGs for each segment, in parallel
    QtConcurrent::blockingMap( tasks, &computeJpeg );
    return result;
#else
    static bool first = true;
    if( first )
    {
        first = false;
        std::cout << "LibJpegTurbo not available, not using compression"
                  << std::endl;
    }
    return generateRaw( image, handler );
#endif
}
bool ImageSegmenter::generate( const ImageWrapper& image,
                               const Handler& handler ) const
{
    if (image.compressionPolicy == COMPRESSION_ON)
        return generateJpeg( image, handler );
    return generateRaw( image, handler );
}