Плохое качество с функцией Icon.ExtractAssociatedIcon - PullRequest
1 голос
/ 28 октября 2011

Я пытаюсь получить значок из exe-файла, где я использовал приведенный ниже фрагмент

 C#
 FileStream fs = new FileStream(icoFileNam, FileMode.OpenOrCreate);
 Icon ico = Icon.ExtractAssociatedIcon(exefilePath);
 ico.Save(fs);

Сохраненное изображение не имеет качества.Я сохранил изображение в виде файла .ico.

Может кто-нибудь знает, как сохранить исходное качество иконки, присутствующей в exefile?

1 Ответ

2 голосов
/ 29 октября 2011

В наиболее распространенных случаях вы можете использовать извлеченные растровые данные значка с помощью метода Icon.ToBitmap () . Вы можете сохранить это изображение в разных форматах. Однако сохранить значок как "true" .ico file довольно сложно .

. Проблема в том, что в .Net нет встроенных кодировщиков для изображений значков. Таким образом, по умолчанию результат был сохранен как низкоцветное изображение. Если это неприемлемо, MS рекомендуется сохранить необработанные растровые данные как .ico вручную. Я предлагаю вам использовать библиотеку IconLib , которая уже выполняет эту задачу:

Icon icon = Icon.ExtractAssociatedIcon(@"C:\Windows\System32\notepad.exe");
MultiIcon mIcon = new MultiIcon();
SingleIcon sIcon = mIcon.Add("notepad");
sIcon.CreateFrom(icon.ToBitmap(), IconOutputFormat.Vista);
sIcon.Save(@"c:\notepad.ico");
...