【发布时间】:2015-03-09 19:29:37
【问题描述】:
有什么方法可以知道 EMF 文件是只有黑白还是有一些颜色?您可以检查调色板或其他方式?有人可以帮我一些代码吗?我需要知道程序生成的每个文件的颜色百分比,但前提是它不是单色的,并且不想逐个像素地计算所有文件。谢谢你
【问题讨论】:
-
stackoverflow.com/a/9557852/30594可以为您提供更多路线吗?
有什么方法可以知道 EMF 文件是只有黑白还是有一些颜色?您可以检查调色板或其他方式?有人可以帮我一些代码吗?我需要知道程序生成的每个文件的颜色百分比,但前提是它不是单色的,并且不想逐个像素地计算所有文件。谢谢你
【问题讨论】:
如果您使用的是 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 值不相等,则它必须是颜色。
【讨论】: