Преобразование изображения из растрового изображения в значок не работает - PullRequest
1 голос
/ 19 апреля 2010

У меня есть простая функция, которая принимает растровое изображение и преобразует растровое изображение в формат ICON. Ниже приведена функция. (Вместо переменных я поместил буквальные значения)

    Bitmap tempBmp = new Bitmap(@"C:\temp\mypicture.jpeg");
    Bitmap bmp = new Bitmap(tempBmp, 16, 16);
    bmp.Save("@C:\temp\mypicture2.ico", ImageFormat.Icon)

Кажется, он не конвертируется правильно ... или я так думаю. После преобразования изображения некоторые браузеры не восстанавливают изображение как истинное «ЗНАЧОК», и даже Visual Studio 2008 не преобразует изображение как значок после его преобразования в формат значков.

Например, я собирался установить свойство Icon для моего приложения в форме Win32 с помощью Icon, которую я только что преобразовал. Я открываю диалоговое окно, выбираю только что преобразованный значок и получаю следующую ошибку.

- «Аргумент 'picture' должен быть изображением, которое можно использовать как Icon."

Я просматривал Интернет и наткнулся на сложный код, где люди находят время, чтобы вручную преобразовать растровое изображение в различные форматы, но я думаю, что приведенный выше код должен работать, и что .NET Framework позаботится об этом преобразовании ,

1 Ответ

2 голосов
/ 19 апреля 2010

Я протестировал следующий код, и он работал, но результаты были не очень хорошими. Помните, что значок имеет ограниченную палитру, и вы, вероятно, потеряете некоторую информацию о цвете.

    Bitmap b = new Bitmap(@"d:\file.jpg");
    Icon i = Icon.FromHandle(b.GetHicon());
    i.Save(File.Open(@"d:\file.ico", FileMode.OpenOrCreate, FileAccess.Write));
...