我正在尝试编写一个简单的实用程序,它通过提供的图像文件列表运行,打开它们并检查图像是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 );
}
}
}
}