BMP als PNG speichern mit System.Drawing.Image



  • ich will eine BMP Datei als PNG speichern:

    Image MyImage = Image.FromFile("test.bmp"); 
    MyImage.Save("test.png", System.Drawing.Imaging.ImageFormat.Png);
    

    Es wird zwar die Datei test.png angelegt - jedoch im BMP Format....



  • mein BMP hat folgendes Pixel Format: A8R8G8B8

    jetzt habe ich mal mein test.bmp durch ein test.bmp mit dem Pixel Format R8G8B8 ersetzt und jetzt klappt auch das umwandeln - diese zwei Zeilen Code haben mich jetzt nur 2 Stunden aufgehalten... *zzssss*... *arg*



  • PNG müsste aber eigentlich einen Alpha-Kanal beherrschen.



  • ups... hab eine Datei mit der Endung BMP gehabt die in Wirklichkeit eine PNG war - was ich geschieben habe ist unsinnn...

    momentan frag ich mich gerade wie aus der BMP Datei eine PNG Datei mit 8 Bit erzeugen kann:

    using System.Drawing;
    using System.Drawing.Imaging;
    using System.Drawing.Drawing2D;
    using System;
    
    class Compress
    {
    	private static ImageCodecInfo GetEncoder(string mimeType)
    	{
    		ImageCodecInfo[] encoders = 
    			ImageCodecInfo.GetImageDecoders();
    
    		for (int i = 0; i < encoders.Length; ++i) 
    		{
    			if (encoders[i].MimeType == mimeType) 
    			{
    				return encoders[i];
    			}
    		}
    		return null;
    	}
    
    	public static void Main(string[] args)
    	{
    		try
    		{
    			Image MyImage = Image.FromFile("dummy.bmp"); 
    
    			ImageCodecInfo encoder = GetEncoder("image/png");
    
    			EncoderParameters parameters = new EncoderParameters(1);
    			parameters.Param[0] = new EncoderParameter(Encoder.ColorDepth,	8);
    
    			MyImage.Save("test.png", encoder, parameters);
    		}
    		catch(Exception ex)
    		{
    			System.Console.WriteLine("Error");
    		}
    	}
    }
    

    falls jemand schon mal so was programmiert hat oder ne idee hat wie das geht wäre ich froh über einen Hinweis 😉


Anmelden zum Antworten