Forse questo è un problema molto facile da risolvere ma non ho ancora trovato la soluzione perfetta. Sto cercando di convertire un PNG ICO con C# e ha trovato la domanda converting .PNG to .ICO in C/C# che tipo di dà una soluzione di lavoro, come di seguito:Converti png in alta qualità ico
using (FileStream stream = File.OpenWrite(@"C:\temp\test.ico"))
{
Bitmap bitmap = (Bitmap)Image.FromFile(@"c:\temp\test.png");
Icon.FromHandle(bitmap.GetHicon()).Save(stream);
}
Per il mio progetto ho cambiato questo approccio leggermente a:
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
}
}
}
Il problema che sto vivendo è che l'ico risultante è di scarsa qualità, immagino che sia ridimensionato a 16x16 e abbia perso parte della profondità del colore, forse ora ha solo 16 colori? Come posso convertire in un file ico di qualità superiore?
Si potrebbe provare: https://gist.github.com/darkfall/1656050. Posso dirti che avrai bisogno di qualcosa di più robusto di "GetHicon" perché è un metodo veloce e sporco, e in nessun modo destinato a essere privo di perdite. – DonBoitnott
@DonBoitnott si prega di inviare il tuo commento come risposta. Ho maneggiato per farlo funzionare con il tuo suggerimento e credo che questa sia la risposta corretta. – Bazzz