Có thể đây là một vấn đề rất dễ giải quyết nhưng tôi chưa tìm ra giải pháp hoàn hảo nào. Tôi đang cố gắng để chuyển đổi một png để ICO với C# và tìm thấy những câu hỏi converting .PNG to .ICO in C/C# mà loại đưa ra một giải pháp làm việc như sau:Chuyển đổi png thành ico chất lượng cao
using (FileStream stream = File.OpenWrite(@"C:\temp\test.ico"))
{
Bitmap bitmap = (Bitmap)Image.FromFile(@"c:\temp\test.png");
Icon.FromHandle(bitmap.GetHicon()).Save(stream);
}
Đối với dự án riêng của tôi, tôi đã thay đổi cách tiếp cận này hơi to:
string pngFile = "path/to/pngfile";
using (Bitmap bitmap = new Bitmap(pngFile))
{
using (Icon icon = Icon.FromHandle(bitmap.GetHicon()))
{
using (MemoryStream stream = new MemoryStream())
{
icon.Save(stream);
// something interesting with icon here
}
}
}
Vấn đề mà tôi đang gặp phải là kết quả ico có chất lượng kém, tôi đoán nó đã được thay đổi kích thước thành 16x16 và mất một số độ sâu màu, có lẽ bây giờ chỉ có 16 màu? Làm cách nào tôi có thể chuyển đổi thành tệp ico chất lượng cao hơn?
Bạn có thể thử: https://gist.github.com/darkfall/1656050. Tôi có thể nói với bạn rằng bạn sẽ cần một thứ gì đó mạnh mẽ hơn 'GetHicon' bởi vì đó là một phương pháp nhanh chóng và dơ bẩn, và không có nghĩa là không bị mất mát. – DonBoitnott
@DonBoitnott xin vui lòng gửi bình luận của bạn như là một câu trả lời. Tôi mang nó để làm việc với đề xuất của bạn và tôi tin rằng đây là câu trả lời đúng. – Bazzz