如何知道元文件是单色的还是有颜色的?

时间:2015-01-12 03:56:13

标签: c# .emf

有没有办法知道EMF文件是仅黑白还是有颜色?你可以检查调色板或其他?有人可以帮我解决一些代码吗?我需要知道程序生成的每个文件的颜色百分比,但前提是它不是单色的,并且不想按所有文件的像素数计算。谢谢

1 个答案:

答案 0 :(得分:0)

如果您使用的是WinForms,这很容易做到:

首先,将EMF文件加载到位图中:

Image img = new Metafile(@"MyFile.emf");
var bmp = new Bitmap(img);

然后您可以使用此功能测试其颜色:

bool isColor = IsColor(bmp);

private bool IsColor(Bitmap bmp)
{
    for (int x = 0; x < bmp.Width - 1; x++)
    {
        for (int y = 0; y < bmp.Height - 1; y++)
        {
            Color c = bmp.GetPixel(x, y);
            if (!(c.R == c.B && c.R == c.G))
                return true;
        }
    }

    return false;
}

基本上它测试每个像素。如果文件是灰度或单色,则给定像素的RGB值将被设置为相同的值。如果任何像素没有相同的RGB值,那么它必须是彩色的。