Hi,
Ich habe ein JPG-Bild 720x480 8BPP und 95% Qualität. Dieses Bild möchte ich via C# öffnen und als BMP verlustfrei abspeichern.
Bitmap image1 = new Bitmap(tempFile);
image3.Save("J:\\test.bmp", ImageFormat.Bmp);
Parallel habe ich das JPG mit IrfanView geöffnet und als BMP gespeichert. Wenn ich die beiden BMP vergleiche, ist das von C# abgespeicherte BMP mehr pixelig als das von IrfanView.
Woran liegt das?
Im Anhang zwei Screenshots die das Problem verdeutlichen sollen
Zwei Bilder kann man nicht anhängen.
Das erste ist das aus C# abgespeicherte
Ich möchte doch BMP speichern, da benötige ich das doch nicht, oder?
Die Veränderung scheint schon beim öffnen des JPG zu geschehen. Egal ob ich das Bitmap-Objekt als BMP oder JPG mit 100% Qualität speichere, es sieht pixeliger aus als das Original JPG oder das von IrfanView konvertierte BMP.
Ich glaube das PixelFormat stimmt nicht, das C#-BMP hat zu wenig Farben.
ImageTools for Silverlight: http://imagetools.codeplex.com | http://www.silverdiagram.net | http://www.cleancodedeveloper.de b:::
Stimmt. Das von IrfanView konvertierte Bild hat 238 unique colors, das von C# nur 16.
Wie kann ich das ändern?
Teste es mal bitte mit der folgenden Funktionsüberladung und berichte von den Ergebnissen: https://msdn.microsoft.com/de-de/library/4sahykhd(v=vs.110).aspx
Den Boolean dabei natürlich auf true setzen.
Hab es jetzt so probiert:
Image image1 = Image.FromFile(tempFile, true);
image1.Save("J:\\test.bmp", ImageFormat.Bmp);
Jedoch mit dem gleichen Ergebnis.
Die Anzahl der unique colors ist wieder nur 16
Naja, das true hat damit soweit ich weiß auch wenig zutun.
Du musst - IIRC - das Bitmap mit PixelFormat.Format8bppIndexed
erstellen.
Schau halt mal das PixelFormat von dem von Dir erstellten Image an.
Das wird halt etwas sein, was keine 8 Bit Farbtiefe hat.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Das Image, egal ob als Bitmap oder Image Objekt erstellt hat das PixelFormat "Format8bppIndexed". Das hab ich nach gesehen.
Es sieht aus als würden beim einlesen des JPG schon Farb- (Grauwert-)Informationen verloren gehen.
Wie kann es sein das sich die Anzahl der unique colors von 238 auf 16 reduziert?
Die Reduktion auf 16 unique colors passiert auch nur, wenn das Quellbild ein JPG ist.
Wenn ich das von IrfanView konvertierte JPG zu BMP einlese und anschließend abspeichere hat das BMP seine ursprünglichen 238 unique colors.
Hallo,
vllt. hilft dir Save 8 bit uncompressed windows bitmap file (.BMP) in c# / .Net?