Empfehlung für Open Source APIs mit denn ich Images / Bilder bearbeiten kann

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von nogood.

    Empfehlung für Open Source APIs mit denn ich Images / Bilder bearbeiten kann

    Moin Foristen,

    auf zu neuen Ufern...

    Mein Ziel ist es eine Foto jpg-Datei mit meinem VB.net Programm zu verändern.
    Verändern möchte ich es in der Form, dass Filter auf das Bild wirksam werden z.B. soll ein normales Bild mit einem aktiven Filter dann so aussehen als ob es mit einer Polaroid Kamera aufgenommen wäre.
    Ich bin nicht bei Instagram. Ich meine da würde es so was geben, dass der Benutzer verschiedene Filter durchklicken kann (so was in der Art möchte ich versuchen umzusetzen ).

    Hat jemand eine Empfehlung für eine API die ich mir ansehen sollte, um so etwas zu realisieren?

    ---
    Einschränkungen

    1. muss mit VB.net gehen (ich kann nix anderes und das auch nur begrenzt :D )
    2. open source oder jedenfalls ohne bezahlen zugänglich
    codewars.com Rank: 4 kyu
    @EaranMaleasi Okay ... Projekt von Github runtergeladen und in VisualStudio angelegt und geöffnet.


    Wie kann ich das jetzt ("exportieren") nutzbar machen für mein VB.net Programm? Sorry für die wahrscheinlich einfachen Fragen und DANKE für Hilfe. Ich kenne converter.telerik.com c# zu VB.net, aber das geht nicht mit Projekten.
    Könntest Du mich noch etwas in die richtige Richtung lenken. Libray erstellen // Alle .NET Libraries Funktionieren mit VB.NET. Wie genau mach ich sowas in diesem Fall?

    --------
    Okay ich hab es glaube ich hinbekommen.

    C# Klassen in einem VB.net Projekt benutzen HowTo:

    1. C # Github Projekt runterladen welches man benutzen möchte
    2. als neues Projekt in Visual Studio öffnen (neues Projekt aus Auschecken/Klonen)
    3. speichern ... Visual Studio wieder schliessen
    --
    4.Visual Studio wieder öffnen und das eigene VB.net Projekt erstellen mit Namen etc.
    5. rechte Maustaste auf Projektmappe oberste Zeile -> Hinzufügen -> Vorhandenes Projekt klicken
    6. Ordner/ ProjektDatei des neu erstellten C# Projekt im Öffnen Dialog wählen (das C# Projekt erscheint im Projektmappen Explorer)
    7. Jetzt rechte Maustaste auf das VB.net Projekt im Projektmappen Explorer -> Hinzufügen- > Verweis klicken
    im nun öffnenden Dialog Projekt auswählen (linke Seite) und den Haken bei dem C# Projekt Namen setzen
    8. genau den Namen jetzt noch als ​Imports in das VB.net einbinden und jetzt sollten die Klassen des C# Projekts in dem VB.net Projekt nutzbar sein

    Bilder
    • c#project.jpg

      290,52 kB, 1.321×1.173, 64 mal angesehen
    codewars.com Rank: 4 kyu

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nogood“ ()

    Ich komm an einer Stelle jetzt doch nicht weiter.

    Zum Verständnis ich hab ein Projekt aus Github das in C# geschrieben ist in meine VB.net Solution importiert und als Verweis "hinterlegt" (siehe obige Post). Ich dachte, dass ich jetzt die Klassen des C# Programms "einfach" aus meinem VB.net Programm aus aufrufen könnte???

    Aber wenn ich eine Instanz aus der "C# Klasse" in meinem VB.net Code erzeugen / benutzten möchte sagt mir der Kompiler

    Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    Fehler BC30389 '"netfx.BitmapW" ist "Friend" und in diesem Kontext nicht zugreifbar. InstaFilter C:\Users\Are\source\repos\InstaFilter\Frmmain.vb 19 Aktiv


    BitmapW ist der Name einer Klasse des C# Projektes (der Fehler wird in Zeile 2 des Codes unten angezeigt, wieder holt sich dann bei den effects. ...)

    VB.NET-Quellcode

    1. Private Sub BtnXYZFilter_Click(sender As Object, e As EventArgs) Handles BtnXYZFilter.Click
    2. Dim a As BitmapW = New BitmapW(openFileDialog1.FileName)
    3. PicBxOrig.Image = a.GetBitmap()
    4. Dim res As BitmapW = a.Clone()
    5. res = effects.saturate(res, -100)
    6. res = effects.contrast(res, 125)
    7. res = effects.noise(res, 3)
    8. res = effects.sepia(res)
    9. res = effects.adjust(res, 8, 2, 4, 6)
    10. PicBxFiltered.Image = res.GetBitmap()
    11. End Sub


    Ich hab schon gelesen, dass wenn es als Friend deklariert ist Instanzen wohl nur in der eigenen Assambly benutzt werden können. Ich weiß nicht was das heißt und wie ich damit umgehen kann.
    Was könnte ich machen, um da weiter zu kommen.
    codewars.com Rank: 4 kyu
    Danke das Du Dir das nochmal an gesehen hast. Hätte ich ja auch lesen können... .Trotzdem steh ich jetzt wieder vor der Frage wie geht das hinzufügen von Klassen aus einem C# Projekt in ein VB.net Projekt.
    Ich schau mal ob ich das hinbekomme. Danke nochmal für den Tipp
    codewars.com Rank: 4 kyu
    Ich steck fest. Ich hab folgendes versucht :

    1. C# Projekt zip Datei runterfgeladen entpackt.
    2. Neues C# Projekt ohne jeglichen Code in Visual Studio angelegt (in der Auswahl hab ich C# Klassenbibliothek NetFramwork gewählt; war das das richtige?)
    3. Jetzt alle C# Klassen dem Projekt hinzugefügt, so dass sie im Projekmappen Explorer zu sehen sind
    4. Kompiliert und ich dachte jetzt würde eine DLL erstellt, die ich dann in einem Vb.Net Projekt einbinden und benutzten kann

    Leider kamen mehrere Fehler (gleicher Art) beim kompilieren:
    Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    Fehler CS0246 Der Typ- oder Namespacename "Bitmap" wurde nicht gefunden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis). InstaFilter2020 C:\Users\Are\source\repos\InstaFilter2020\Bitmap.cs 25 Aktiv


    Was muss ich noch tun um eine DLL erfolgreich zu erstellen?
    codewars.com Rank: 4 kyu
    Ich hab es nun doch noch geschafft den C# Code in mein VB.net Programm einzubeziehen.

    Hier nur der Vollständigkeit halber kurz der Hergang.

    1.So wie in Post 9 geschrieben eine DLL des C# Klassen erstellt (ABER 1 Klasse mehr als der Autor in seiner Anleitung schrieb. Die blur.cs musste ich auch noch mit dazu nehmen)
    2. Im C# Dll Projekt mußte ich auch noch eine using Direktive manuell hinzufügen (weiß gerade nicht genau welche(anderer PC; ...drawing...))
    3. Im C# Projekt die hinzugefügten Klassen noch mit dem Public Modifierer versehen
    4. Im VB.net Projekt namespace einfügen

    Dann konnte ich die DLL Funktionen des C# Codes in meinem VB.net Projekt nutzen.

    Ist denke mal für jemanden der "wirklich" programmieren kann eine einfache Angelegenheit, für mich waren das ne Menge Trail and Error Versuche bis ich es zum laufen gebracht habe.

    Als Nebenprodukt hab ich noch gelernt wie man unter VB.net aus einer Klasse eine DLL erzeugt und diese dann in einem anderen Projekt nutzen kann (der Klassiker mit der Funktion in der DLL die 2 Zahlen addiert) :)

    @EaranMaleasi Danke für die Tipps und den Link // jetzt kann ich die API erstmal ausprobieren
    codewars.com Rank: 4 kyu