JPEG aus Stream lesen und anzeigen



  • Bei mir funktioniert der Code.
    Image.FromStream Method



  • Ich hab jetzt was rausgefunden. In einem anderen Projekt kann ich diese Methode aufrufen, da bekomm ich auch nach Eingabe des Punktes die Liste der Member von Image angezeigt. Aber in meinem aktuellen Projekt geht das nicht. Woran könnte das liegen? Assemblyverweise sind alle drin.... ich bin ratlos!!!

    Vielen Dank für Deine bisherige Hilfe!



  • Ich wette du hast nur System.Drawing.Imaging, aber nicht System.Drawing im using.



  • Doch, ich hab System.Drawing drin aber dafür System.Drawing.Imaging nicht. Brauch ich das?



  • Dann könntest du einfach ImageFormat anstatt Imaging.ImageFromat, aber ansonsten brauchste es nicht.

    Poste doch mal waas für Verweise du alles drin hast.



  • Folgende Verweise hab ich drin:

    using System;
    using System.IO;
    using System.Windows.Forms;
    using System.Text.RegularExpressions;
    using System.Drawing;
    using System.Drawing.Imaging;
    

    Das ist der Inhalt einer Methode:

    MemoryStream imageStream = new MemoryStream(buffer);
    Image img = Image.FromStream(imageStream);
    

    und die Fehlermeldung hab ich ja schon gepostet. Das gibts doch nicht!!! Was mach ich denn da falsch???

    Vielen Dank für Eure Geduld!! 🙂



  • Usings sind nicht gleich Verweise. Die Namespaces im Using ersparen dir nur Tipparbeit und gestallten den Quellcode übersichtlicher. Verweise sind die eingebundenen Assemblys. In Visual Studio bzw Visual C# findest du im Projektmappen-Explorer ein Ordner mit den Verweisen.



  • Ach so, Entschuldigung, hab ich verwechselt.

    Meine Verweise sind:

    MSCorLib
    OpenNETCF
    System
    System.Data
    System.Drawing
    System.Windows.Forms
    System.XML
    

    Also an sich alles OK...



  • schrankwand schrieb:

    Dann könntest du einfach ImageFormat anstatt Imaging.ImageFromat, aber ansonsten brauchste es nicht.

    Sowas geht nicht!

    using A.B;
    
    A.B.C.d = bla; // Okay
    C.d = bla; // Geht nicht
    

    @bherd:
    Bei dir fehlt
    using System.Drawing.Imaging;

    Jockelx



  • Jockelx schrieb:

    Bei dir fehlt
    using System.Drawing.Imaging;

    Weshalb?
    Mein Codebeispiel funktioniert auch ohne diese Anweisung.



  • @Jockelx: Also erstens geht das sehr wohl was ich da geschrieben hab und zweitens ha er ja System.Drawing.Imaging schon im using.

    @Noodles: Wenn man den Namespace Imaging immer mit angibt schon. Aber z.B. ich bevorzuge es alle verwendeten Namespaces ins using zu packen anstatt sie der Klasse immer vorran zu stellen.



  • schrankwand schrieb:

    @Noodles: Wenn man den Namespace Imaging mit angibt schon.

    Weshalb ich ihn mit angegeben habe.

    schrankwand schrieb:

    Aber z.B. ich bevorzuge es alle verwendeten Namespaces ins using zu packen anstatt sie der Klasse immer vorran zu stellen.

    Ändert nichts an der Tatsache, dass es ohne using ... funktioniert.



  • @schrankwand:
    Hast du einen c#-Kompiler da?
    Ich nämlich nicht, kann es daher nicht ausprobieren.
    Bin mir aber sicher, dass das so in meinem Buch steht;
    hab aber bei MSDN auch nix gefunden, dass das nicht geht.
    Also, wenn du das nicht 100% weisst, dann probier es mal bitte aus.



  • Ja, ich habe einen C#-Compiler da, wobei genau genommen werden .NET-Anwendungen erst zur Laufzeit kompiliert. Rein zufällig bin ich nämlich Programmierer in einem Unternehmen wo in C# programmiert wird. Nichts desto trotz dient die using-Anweiung dazu das ständige angeben von Namespaces zu ersparen. Die using-Anweisung hat also rein garnichts mit der #include-Direktive von C++ zu tun oder womit auch immer du das jetzt verwechselt hast.



  • schrankwand schrieb:

    Ja, ich habe einen C#-Compiler da, wobei genau genommen werden .NET-Anwendungen erst zur Laufzeit kompiliert.Rein zufällig bin ich nämlich Programmierer in einem Unternehmen wo in C# programmiert wird.

    Und wann wirst du entlassen?

    1. Ich hab dir eine normale Frage gestellt, weil ich selber nicht mehr
    sicher war.

    2. Kompilieren heisst nicht unbedingt in nativen Code zu übersetzen!
    Eine C#-Datei wird natürlich nicht erst zur Laufzeit kompiliert.



  • schrankwand schrieb:

    Rein zufällig bin ich nämlich Programmierer in einem Unternehmen wo in C# programmiert wird.

    Fehlt nur noch ein Ätsch am Ende des Satzes.
    So eine Aussage sagt nichts über die Kenntnisse Deiner Person aus.



  • @Jockelx: Achja? Und wieso heisst das dann JIT-Compiler - Just-in-Time-Compiler? Außerdem wird nich die C#- sondern die exe-Datei zur Laufzeit kompiliert, genau wie bei Java. Das umwandeln von Quellcode also der C#-Dateien in .NET-Bytecode bezeichnet man allenfalls als Vorkompilieren. Aber wir kommen jetzt langsam vom eigentlichen Thema ab. 😉



  • Ich hab nie bestritten, dass auch zur Laufzeit kompiliert wird...

    Egal, dann kommen wir halt zum Thema zurück:
    Das mit dem "hast du einen C#-Kompiler da" war ja nicht böse gemeint,
    ich hab halt gerade keinen da und ich wollte das du deine Aussage
    nochmal überprüfst. Also kann man ein namespace so aufteilen:

    namespace1.namespace2.namespace3.Klasse;
    in
    using namespace1.namespace2;
    ...
    namespace3.Klasse
    

    Das hast du ja behauptet.
    Ich habs selber nie ausprobiert, weiss aber das das laut meinem Buch
    nicht erlaubt ist.
    Wenn du also lust hast, dann probier es aus damit wir Klarheit haben.
    Sonst versuch ich es zuhause.

    Jockel



  • schrankwand schrieb:

    Das umwandeln von Quellcode also der C#-Dateien in .NET-Bytecode bezeichnet man allenfalls als Vorkompilieren.

    Ich will nicht wieder anfangen, aber das ist Quatsch!



  • So, ich habs jetzt extra für dich zum 7216. Mal ausprobiert und wer hätte es geahnt 😉 ...

    namespace Application
    {
    	class Class
    	{
    		static void Main()
    		{
    			System.Console.WriteLine("Hallo");
    		}
    	}
    }
    

    und

    using System;
    
    namespace Application
    {
    	class Class
    	{
    		static void Main()
    		{
    			Console.WriteLine("Hallo");
    		}
    	}
    }
    

    geben beide in einem Konsolenfenster das Wort "Hallo" aus ohne das Visual Studio eine Warnung ausgibt oder die Anwendung eine Exception wirft.


Anmelden zum Antworten