Bildabfrage Programm



  • Hallo ich bin Felix und hoffe hier ein paar Tipps und Anregungen zu bekommen um mein Projekt zu verwirklichen,

    also ich habe folgendes Projekt.

    eine Windows app die meine Bilder anzeigt (erstmals lokale Bilder, später die von meinem Webserver)

    Bilder lokal anzeigen klappt soweit nur möchte ich das mein Suchfeld nicht mehr mit ganzen Pfad eingetippt werden muss.

    als Beispiel:

    in meinem Suchfeld muss ich eintippen c:\Testbild.jpg

    ich möchte aber das 1. der Pfad fest vorgegeben wird (c:\Bilder zb in dem Fall bei lokal, später dann der webspace] und 2. dann der dateiendungsname rangehängt wird so das man in das Suchfeld nur noch in dem Fall Testbild eintippt.

    wie müsste ich am besten vorgehen?

    könnte es mir vorstellen das ich zb feste werte hinzufüge beim öffnen der Datei zb text aus textbox1+.jpg. oder denke ich da komplett falsch.

    Ich hoffe jemand kann mir helfen oder einen Denkanstoß geben.

    Vielen Dank erstmal

    Liebe Grüße

    Felix



  • Hallo Felix,

    mit der Path.Combine()-Methode kannst du einfach Pfade (bzw. Pfad + Dateinamen) zusammensetzen.
    Und den Pfad kannst du dir selbstverständlich aus verschiedensten Quellen holen, z.B. fest einprogrammiert, per TextBox, aus einer Konfigurationsdatei, relativ zum Progamm (Application.StartupPath)...



  • danke erstmal für die schnelle antwort, ich schau mir sofort die infos über den befehl an .

    Danke



  • so habe mir das jetzt angeschaut, wäre genau das was ich möchte.

    jetzt meine frage wie binde ich dann die beiden string pfade mit meiner abfrage ein.

    ich muss ja zuerst die beiden string pfade (zum kombinieren erstellen) richtig?

    also

    string path1 = "c:\\Bilder";
    string path2 = ".jpg";

    CombinePaths(path1, path2);

    wie füge ich das dann bei meiner Textboxanfrage ein?

    ist das dann path1-textboxanfrage-path2??



  • string path1 = "c:\\Bilder";
    string path2 = textboxanfrage.Text + ".jpg";
    

    Du könntest es noch eleganter Lösen mit

    (hier fehlt noch das combine path)

    string Path = string.Format("c:\\Bilder\\{0}.jpg",textboxanfrage.Text);
    


  • ok danke für die weiteren Erklärungen.

    ich glaub den kern von dem Befehl habe ich verstanden, aber ich setzte ihn wohl noch falsch ein.

    string Path = string.Format("c:\\Bilder\{0}.jpg", textBox1.Text);

    if (textBox1.Text != String.Empty)
    {

    //existiert die Datei überhaupt?

    if (System.IO.File.Exists(textBox1.Text)

    //wenn ja, dann laden und anzeigen

    pictureBox1.Load(textBox1.Text);

    else
    MessageBox.Show("Das Bild gibt es nicht");
    }
    }

    Durch deinen Befehl wird die Die Texteingabe in die mitte genommen und die beiden path dazuaddiert, richtig?



  • // delete



  • Hallo Felix,

    du mußt natürlich auch die Stringvariable 'path' benutzen (anstatt textBox1.Text) 😉

    P.S. Verwende bitte die CS-Tags hier im Forum für den Code.



  • ich Depp , natürlich hast ja vollkommen recht, so klappt es dann auch!!

    vielen dank damit habe ich schon mal den 1 teil geschafft und werde daran jetzt erst mal rumspielen und mir das einprägen.

    Mit den CS code werde ich in Zukunft machen danke für den Tip.

    Im 2 teil schau das ich das auch von einem webspace laden kann, reicht das da nur den pfad in dem string zu ändern auf den webspace oder soll ich mir da eventuell noch einen anderen Befehl anschauen.

    Vielen Lieben dank

    felix



  • felix1615 schrieb:

    ich Depp , natürlich hast ja vollkommen recht, so klappt es dann auch!!

    vielen dank damit habe ich schon mal den 1 teil geschafft und werde daran jetzt erst mal rumspielen und mir das einprägen.

    Mit den CS code werde ich in Zukunft machen danke für den Tip.

    Im 2 teil schau das ich das auch von einem webspace laden kann, reicht das da nur den pfad in dem string zu ändern auf den webspace oder soll ich mir da eventuell noch einen anderen Befehl anschauen.

    Vielen Lieben dank

    felix

    Nur so für die Zukunft: Du kannst bei string.Format auch mehrere strings einfügen e.g. string.Format("{0}{1}{2}",1,2,3...);

    Wenn du eine Datei von nem Webspace willst kannst du Datei entweder direkt über HTTP oder FTP runter laden und die dann wie gehabt öffnen. Google einfach "download file C#".



  • Da ich heute die Frage schon mal beantwortet habe, hier nur der Link: Bild vom Server lokal speichern (gilt für beliebige Dateien, nicht nur für Bilder 😉



  • ich würde halt gerne das dort die Daten liegen in dem falle die Bilder und ich sie nicht lokal erst laden muss, wenn das aber nicht gehen würde, wäre mein anderer Gedankengang das ich das mit dem Befehl wie du sagtest Runterlade (die ganzen Bild datein) und dann weiterhin so öffne.

    was empfehlen mir da die Profis?

    kann man mit dem befehl auch verhindern das er datein nochmal lädt die schon da sind?

    schau mir den befehl gleich mal an



  • th69 habe mir deinen Link angeschaut, das klappt auch gut, Problem ist bloß das ich nur eine Datei dann lade??

    ich möchte alle Dateien (alles jpg Dateien) laden.So müsste ich ja immer den Namen angeben.bei den Vielen Bilder wäre das aber Zeitaufwendig.

    Im Endeffekt soll er so wie du es mir mit deinem Link aufgezeigt hast auch funktionieren bloß das er alle *.jpg Datein lokal abspeichert.



  • So habe jetzt mal weiter an meinem Programm gebastelt, und mir die ganzen Links dir ihr mir lieberweise geschickt habt durchgelesen.

    mir stellen sich jetzt zwei fragen.

    mit den download geht immer nur eine datei, und die Bilder möchte ich doch nicht immer erst lokal laden und dann erst aufrufen.

    habe mir jetzt gedacht das ich vlt meinen webspace als netzwerklaufwerk einbinden könnte, so müsste es doch dann auch dort aufgerufen werden können ohne erst die dateien immer erst lokal laden zu müssen?? habe ich da einen denkfehler oder könnte man das dann wirklich so umsetzten?

    Liebe grüße felix



  • Hallo Felix,

    du willst doch die Bilder bei dir lokal anzeigen, oder?
    Also mußt du sie auch runterladen 😉

    Du brauchst aber natürlich nicht die Bilder bei dir lokal abzuspeichern, sondern kannst sie direkt aus dem Byte-Array heraus anzeigen.

    Dazu dann einen MemoryStream benutzen und daraus dann eine Bitmap erzeugen...

    Wenn du direkt an die Dateien über's Netzwerk herankommst (anstatt über HTTP), dann kannst du natürlich die Directory.GetFiles()-Methode benutzen, um alle Dateien (bzw. gefiltert, z.B. "*.jpg") zu erhalten.



  • 🙂 da hast du natürlich recht laden muss ich sie sowieso auch wenn es nur temp ist.

    also ich habe vollen zugang auf den server.

    jetzt wäre da deine Meinung gefragt was am sinnvollsten ist.

    das Endprodukt soll sein das er die Datei(Bild) auf dem Server sucht (durch die nette hilfe mit den string path geht es lokal super) und dann lokal anzeigt bis die nächste anfrage kommt.

    was macht da jetzt am besten Sinn?

    P.S.: es soll dann wirklich immer nur das eine Bild angezeigt werden wovon ich den namen eintippe



  • Habe es jetzt geschafft direkt vom webspace das Bild anzeigen zu lassen, ohne das er es speichert (danke nochmal da für den Tip) er nimmt da aber wieder nur den ganzen Pfad.Wenn ich es dann probiere über den String wieder ein Kombination zu machen bricht er ab wegen einen URI Fehler.

    WebRequest req = WebRequest.Create("http://ip/{0}.jpg", textBox2.Text);
           Stream stream = req.GetResponse().GetResponseStream();
           Image img = Image.FromStream(stream);
           this.pictureBox1.Image = img;
       }
    

    geht da die Methode nicht wie bei der lokalen Kombinationsabfrage?

    Liebe Grüße

    Felix




Log in to reply