Konvertieren Sie png zu hohe Qualität ico

Vielleicht ist dies ein sehr einfaches problem zu lösen, aber ich habe nicht die perfekte Lösung gefunden noch.
Ich bin versucht zu konvertieren von png zu ico mit C# und gefunden, die Frage die Konvertierung .PNG zu .ICO in C/C#, welche Art von gibt eine funktionierende Lösung wie folgt:

using (FileStream stream = File.OpenWrite(@"C:\temp\test.ico"))
{
    Bitmap bitmap = (Bitmap)Image.FromFile(@"c:\temp\test.png");
    Icon.FromHandle(bitmap.GetHicon()).Save(stream);
}

Für mein eigenes Projekt habe ich geändert, ist dieser Ansatz leicht zu:

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
      }
   }
}

Das problem, das ich erlebe, ist, dass die resultierenden ico ist von schlechter Qualität, ich vermute, es wurde geändert, 16x16 und verloren einige Farbtiefe, vielleicht hat jetzt nur noch 16 Farben? Wie kann ich konvertieren, um eine höhere Qualität in der ico-Datei?

  • Sie könnten versuchen: gist.github.com/darkfall/1656050. Ich kann Ihnen sagen, Sie gehen zu müssen, um etwas robuster als GetHicon denn das ist eine quick-and-dirty-Methode, und keineswegs gemeint verlustfrei.
  • bitte posten Sie Ihren Kommentar als eine Antwort. Ich manged zu bekommen, es funktioniert mit deinem Vorschlag und ich glaube, das ist die richtige Antwort.
InformationsquelleAutor Bazzz | 2013-06-27
Schreibe einen Kommentar