.NET GUI

.NET Community rund um alle Graphical User Interface (GUI) Themen.
Willkommen bei .NET GUI. Anmeldung | Registrieren | Hilfe | Impressum | Forumsregeln
in Suchen

System.Windows.Media.Imaging.BitmapImage konvertieren zu System.Drawing.Image

Letzter Beitrag 09-04-2008 9:17 von LadyElisha. 8 Antworten.
Seite 1 von 1 (9 Treffer)
Beiträge sortieren: Zurück Weiter
  • 07-31-2008 9:44

    • LadyElisha
    • Top 50 Mitwirkender
    • Registriert am 07-31-2008
    • Beiträge 5
    • Punkte 85

    System.Windows.Media.Imaging.BitmapImage konvertieren zu System.Drawing.Image

    Hallo zusammen,

    ich bin dabei ein C# Programm zu schreiben, das Bilder einliest und daraus Thumbnails erstellt und das ganze in eine Datenbank speichert.
    Ich habe es mittlerweile geschafft die Unterstützung für .cr2 Dateien zu integrieren, das entspricht dem Canon Raw Codec.
    Ich habe aber auch mit .dcr Dateien zu kämpfen, diese sind Nikon Raw Codec.
    Beim Einlesen der .dcr Dateien habe ich nun Probleme.
    Als BitmapImage kann ich die Datei einlesen, nur fehlt mir die Umwandlung in System.Drawing.Image.

    Kann mir jemand helfen, gebe gerne auch noch etwas mehr infos ;)
    gruß eli
    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 07-31-2008 10:35 Antwort zu

    • Norbert Eder
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 04-09-2008
    • Graz / Austria
    • Beiträge 502
    • Punkte 7.469
    • ForumsAdministrator

    AW: System.Windows.Media.Imaging.BitmapImage konvertieren zu System.Drawing.Image

    Wie machst du das Einlesen bzw. die Umwandlung konkret? Sprich, gibt's da einen Fehler, oder woran genau scheitert es?
    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 07-31-2008 10:44 Antwort zu

    • LadyElisha
    • Top 50 Mitwirkender
    • Registriert am 07-31-2008
    • Beiträge 5
    • Punkte 85

    AW: System.Windows.Media.Imaging.BitmapImage konvertieren zu System.Drawing.Image

    Einlesen tu ich das ganze momentan mit diesem Code:

                BitmapImage bmi = new BitmapImage();
                bmi.UriSource = new Uri(@"C:\test\raw\jimten_1_02.DCR");
                using (MemoryStream outStream = new MemoryStream())
                {
                    BitmapEncoder enc = new BmpBitmapEncoder();
                    enc.Frames.Add(BitmapFrame.Create(bmi));
                    enc.Save(outStream);
                    System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(outStream);
                    bmp.Save(@"C:\test\raw\work.JPG", ImageFormat.Jpeg);
                }
    Wenn ich das ganze dann ausführe bekomme ich bei
    enc.Frames.Add(BitmapFrame.Create(bmi));
    folgende Fehlermeldung:

    InvalidOperationException wurde nicht behandelt / Das Objekt muss zum Durchführen des Vorgangs zunächst initialisiert werden.

    Für die .cr2 Files benutze ich folgende Methode:

            public Bitmap convert()
            {
                using (Stream stm = File.Open(@"C:\test\raw\jimten_1_01.DCR", FileMode.Open, FileAccess.Read))
                {
                    System.Windows.Media.Imaging.BitmapSource bitmapSource = System.Windows.Media.Imaging.BitmapFrame.Create(
                        stm, System.Windows.Media.Imaging.BitmapCreateOptions.None, System.Windows.Media.Imaging.BitmapCacheOption.OnLoad);
    
                    double newWidthRatio = pictureBox1.Width / (double)bitmapSource.PixelWidth;
                    double newHeightRatio = ((pictureBox1.Width * bitmapSource.PixelHeight) / (double)bitmapSource.PixelWidth) / (double)bitmapSource.PixelHeight;
    
                    System.Windows.Media.Imaging.BitmapSource transformedBitmapSource =
                        new System.Windows.Media.Imaging.TransformedBitmap(bitmapSource, new System.Windows.Media.ScaleTransform(newWidthRatio, newHeightRatio));
    
                    int width = transformedBitmapSource.PixelWidth;
                    int height = transformedBitmapSource.PixelHeight;
                    int stride = width * ((transformedBitmapSource.Format.BitsPerPixel + 7) / 8);
    
                    textBox1.Text = "WidthRatio " + newWidthRatio + " HeigthRatio " + newHeightRatio + " Width " + width + " Height " + height;
    
                    byte[ bits = new byte[height * stride];
    
                    transformedBitmapSource.CopyPixels(bits, stride, 0);
    
                    unsafe
                    {
                        fixed (byte* pBits = bits)
                        {
                            IntPtr ptr = new IntPtr(pBits);
                            System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(width, height, stride, System.Drawing.Imaging.PixelFormat.Format32bppPArgb, ptr);
                            pictureBox1.Image = bitmap;
                            return bitmap;
                        }
                    }
                }
            }

    Wenn ich die Methode mit .dcr statt .cr2 Files aufrufe bekomme ich in dieser Zeile eine Fehlermeldung:

    System.Windows.Media.Imaging.BitmapSource bitmapSource = System.Windows.Media.Imaging.BitmapFrame.Create(
                        stm, System.Windows.Media.Imaging.BitmapCreateOptions.None, System.Windows.Media.Imaging.BitmapCacheOption.OnLoad);

    NotSupportedException wurde nicht behandelt / Es wurde keine passende Imagingkomponente zum Abschließen dieses Vorgangs gefunden.

    Soweit ich bisher gelesen habe geht es wohl nur so, dass ich mir das .dcr File in ein byte[ array schreibe, und aus diesem byte[ array dann wieder ein image erstelle.

    gruß eli
    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 08-01-2008 8:39 Antwort zu

    • Norbert Eder
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 04-09-2008
    • Graz / Austria
    • Beiträge 502
    • Punkte 7.469
    • ForumsAdministrator

    AW: System.Windows.Media.Imaging.BitmapImage konvertieren zu System.Drawing.Image

    Das File nur in ein Byte-Array zu schreiben wird wohl nicht reichen. Denn schließlich bringt es ein eigenes Format mit sich, welches in ein verarbeitbares Format konvertiert werden muss. D.h. es wird wohl notwendig sein, hierfür einen eigenen Konverter zu schreiben. Mangels DCR-File kann ich das aber leider so nicht testen.
    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 08-01-2008 9:54 Antwort zu

    • LadyElisha
    • Top 50 Mitwirkender
    • Registriert am 07-31-2008
    • Beiträge 5
    • Punkte 85

    AW: System.Windows.Media.Imaging.BitmapImage konvertieren zu System.Drawing.Image

    Wenn du mir deine Email Addy verrätst könnte ich dir ein .dcr File zukommen lassen

    Über dein Profil Mail schreiben kann ich keine Anhänge anfügen, meine .dcr File hat 12MB.

    Gruß eli
    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 08-01-2008 13:08 Antwort zu

    • Norbert Eder
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 04-09-2008
    • Graz / Austria
    • Beiträge 502
    • Punkte 7.469
    • ForumsAdministrator

    AW: System.Windows.Media.Imaging.BitmapImage konvertieren zu System.Drawing.Image

    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 08-18-2008 16:28 Antwort zu

    • LadyElisha
    • Top 50 Mitwirkender
    • Registriert am 07-31-2008
    • Beiträge 5
    • Punkte 85

    AW: System.Windows.Media.Imaging.BitmapImage konvertieren zu System.Drawing.Image

    Norbert Eder:
    Ich habe dir eine entsprechende Nachricht zukommen lassen.


    Und ich habe dir endlich das Bild geschickt, sorry dass es so lange gedauert hat
    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 08-18-2008 19:14 Antwort zu

    • Norbert Eder
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 04-09-2008
    • Graz / Austria
    • Beiträge 502
    • Punkte 7.469
    • ForumsAdministrator

    AW: System.Windows.Media.Imaging.BitmapImage konvertieren zu System.Drawing.Image

    Danke. Habe ich erhalten. Ich werde mir das in den nächsten Tagen ansehen.
    • Beitragspunkte: 20
    • IP-Adresse ist Registriert
  • 09-04-2008 9:17 Antwort zu

    • LadyElisha
    • Top 50 Mitwirkender
    • Registriert am 07-31-2008
    • Beiträge 5
    • Punkte 85

    AW: System.Windows.Media.Imaging.BitmapImage konvertieren zu System.Drawing.Image

    Guten Morgen,

    schon eine Lösung in Sicht?

    Gruß eli
    • Beitragspunkte: 5
    • IP-Adresse ist Registriert
Seite 1 von 1 (9 Treffer)
Powered by Community Server (Commercial Edition)    Hosting powered by 69° media solutions