Potrzebuję zapisać obiekt Bitmap załadowany z pliku obrazu (.png, .jpeg, .bmp) i zapisać go jako ikonę (.ico) do osobnego pliku.Jak zapisać bitmap jako ikonę?
Najpierw próbowałem zapisywania obiektu Bitmap do pliku z ikoną ImageFormat:
using System.Drawing;
Bitmap bmp = (Bitmap)pictureBox1.Image;
bmp.Save(@"C:\icon.ico", Imaging.ImageFormat.Icon);
Ten jeden nie powiedzie się, jak ikona produkowane nie jest w odpowiednim formacie i nie może być używany jako ikona.
Następny był dostać hIcon z Bitmap i zapisać go do pliku:
using System.Drawing;
using System.IO;
StreamWriter iconWriter = new StreamWriter(@"C:\icon.ico");
Icon ico = Icon.FromHandle(((Bitmap)pictureBox1.Image).GetHicon())
ico.Save(iconWriter.BaseStream);
iconWriter.Close();
iconWriter.Dispose();
Ten jeden nie wykonać zadanie zbyt. Chociaż plik ikony jest poprawnie napisany, ma tylko 16 kolorów oraz ograniczoną szerokość i wysokość.
Chciałbym móc pisać ikony o niestandardowej szerokości i wysokości, które zachowałyby kolory z oryginalnego obrazu. Czy jest to możliwe do osiągnięcia w .NET?
Z góry dziękuję.
GetHicon() rzeczywiście robi gównianą robotę. Wypróbuj to: http://www.codeproject.com/KB/cs/IconLib.aspx –
Użyłem tego również z powodzeniem: http://www.codeproject.com/KB/GDI-plus/safeicon.aspx –