Есть ли способ узнать, является ли файл EMF только черно-белым или имеет какой-то цвет? Вы можете проверить цветовую палитру или как-то иначе?. Кто-нибудь, кто может помочь мне с кодом, пожалуйста? Мне нужно знать процент цветов каждого файла, сгенерированного программой, но только если он не монохроматичен, и я не хочу делать попиксельный подсчет всех файлов. Спасибо
как узнать, является ли метафайл монохромным или цветным?
comment
Вы пробовали читать спецификацию? msdn.microsoft.com/en-us/library/cc250370.aspx
- person MarcinJuraszek   schedule 12.01.2015
comment
Может ли stackoverflow.com/a/9557852/30594 дать вам дополнительные указания?
- person Ramesh   schedule 12.01.2015
Ответы (1)
Если вы используете 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, то он должен быть цветным.
person
Icemanind
schedule
12.01.2015
и не хочется делать попиксельный подсчет всех файлов
- person user3799564; 12.02.2015