图形Magick C ++ API PNG输出

时间:2012-07-30 08:42:55

标签: c++ graphics graphicsmagick

我正在尝试编写一个简单的实用程序,它通过提供的图像文件列表运行,打开它们并检查图像是24位还是32位。如果不是,则将其转换并保存。

我在ImageMagick和Graphics Magick下进行了一些微小的改动 - 下面的代码是在Graphics Magick下面。我从这个question

中抓住了参数来保存

BTW我正在使用Graphics / Image Magick,因为在我的实用程序的其他部分我需要分割PSD文件,据我所知,Image / Graphics Magick是唯一可以读取/写入PSD文件的图形API,带有图层,正确的。 (图层位很重要)

但我似乎没有任何运气。任何想法可能是错的。有人成功吗?任何更适合的API?

我正在为每个建立最新的库。

干杯,

马丁

void
fileProcess( const std::string& pFileName )
{
    Magick::Image img;
    img.read( pFileName );

    if( img.type() != Magick::TrueColorMatteType && 
        img.type() != Magick::TrueColorType )
    {
        Magick::ImageType type = img.type();
        std::cout << "Wrong image type - " << pFileName << "\n";

        img.type(Magick::TrueColorMatteType);
        img.magick( "png" );
        img.defineSet("png:color-type", "6");
        img.defineSet("png:bit-depth", "8");
        img.defineSet("png:format", "png32");
        img.write( pFileName );
    }
}

int 
main(int argc, CHAR* argv[])
{
    Magick::InitializeMagick( *argv );

    std::ifstream fileList( ( "fileList.txt" ) );

    if( !fileList.fail() )
    {
        while( !fileList.eof() )
        {
            std::string imageFileName;
            fileList >> imageFileName;
            if( !imageFileName.empty() )
            {
                fileProcess( imageFileName );
            }
        }
    }
}

0 个答案:

没有答案