Ich habe folgenden Code:
Wenn ein Bild im 8bit indexed Format vorliegt wird es als bmp auch mit 8bit gespeichert. Als png jedoch immer mit 24 oder 32bit. Wie kann ich es als 8bit indexed PNG speichern?
Versuchte schon den folgenden Code:
aber das hat nicht funktioniert (auch nicht anstatt 8L eine byte-Variale einzusetzen). Das Bild wurde immer mit 32bit gespeichert.
Vielen Dank
Code:
Bitmap tmp = b.GetBitmap(); if (saveFileDialog1.FilterIndex == 1) { tmp.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg); } if (saveFileDialog1.FilterIndex == 2) { tmp.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Bmp); } if (saveFileDialog1.FilterIndex == 3) { tmp=b.To8bppIndexed(); tmp.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Gif); MessageBox.Show("Bild wird in 256 Farben umgewandelt. Es können Farbverluste auftreten.", "Qualitätsverlust", MessageBoxButtons.OK, MessageBoxIcon.Information); } if (saveFileDialog1.FilterIndex == 4) { tmp.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Emf); } if (saveFileDialog1.FilterIndex == 5) { tmp.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Wmf); } if (saveFileDialog1.FilterIndex == 6) { tmp.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Tiff); } if (saveFileDialog1.FilterIndex == 7) { tmp.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Png); }
Versuchte schon den folgenden Code:
Code:
System.Drawing.Imaging.ImageCodecInfo[] ImgCodecs; System.Drawing.Imaging.EncoderParameters ImgParams; ImgCodecs = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders(); ImgParams = new System.Drawing.Imaging.EncoderParameters(1); ImgParams.Param[0] = new System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.ColorDepth, 8L); tmp.Save(saveFileDialog1.FileName, ImgCodecs[1], ImgParams);
Vielen Dank
Comment