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