Abstraktes Header-Bild in den Farben von tsjdev apps

Blogbeitrag

PicCaptionr: Erstelle Instagram-taugliche Bildunterschriften mit KI

AI

Ein KI-gestütztes Tool, das automatisch schöne, kontextbezogene Bildunterschriften im Instagram-Stil erstellt – direkt von deinem Desktop, auf allen wichtigen Plattformen.

In einer Welt voller Fotos ist es oft die Bildunterschrift, die auf Social Media den Unterschied macht.
Egal ob du Reiseblogger, Content Creator oder Gelegenheits-Abenteurer bist – die richtigen Worte zu finden, ist manchmal schwerer, als das perfekte Foto zu schießen.

✨ Features

  • 🧠 OpenAI Vision-Unterstützung zum Erkennen von Bildinhalten
  • 🌍 Mehrsprachige Ausgabe (z. B. Englisch, Deutsch, Spanisch)
  • 📁 Verarbeitung von mehreren Bildern aus Ordnern
  • 🧾 JSON-Export inklusive EXIF- und KI-Metadaten
  • ⚙️ Konsolen- und GUI-Varianten (Avalonia & WPF)
  • ☁️ Unterstützung für OpenAI- und Azure-OpenAI-Backends

🧱 Architekturüberblick

PicCaptionr ist sauber strukturiert – mit DI-fähigen Servicelayern und plattformspezifischen UI-Layern:

PicCaptionr.ConsoleApp     # Konsolen-App (Cross-Platform)
PicCaptionr.WPFApp         # WPF UI für Windows
PicCaptionr.AvaloniaApp    # Cross-Platform UI mit Avalonia
PicCaptionr                # Gemeinsame Services, Modelle und Interfaces

🖼️ So funktioniert’s

Jedes Foto durchläuft folgende Ablauf:

  1. EXIF-Metadaten auslesen (z. B. GPS, Zeitstempel)
  2. Bildgröße für effiziente KI-Abfragen anpassen
  3. Prompt mit optionalem Benutzereingaben erstellen
  4. OpenAIs Vision API aufrufen, um das Foto zu analysieren
  5. Vorschlag für eine Bildunterschrift erhalten
  6. Alle Daten (inklusive Tokens und Metadaten) als JSON exportieren

🔍 Beispiel: Verarbeitung eines Bildes

Die Kernlogik liegt im ProcessService oder im entsprechenden ViewModel. Hier eine vereinfachte Version:

public async Task StartProcessAsync()
{
   string[] imageFiles = Directory.GetFiles(pictureFolderPath)
      .Where(file => imageExtensions.Contains(Path.GetExtension(file)))
      .ToArray();

   foreach (var image in imageFiles)
   {
      ImageMetaDataResponse meta 
        = await _imageService.ExtractMetaDataAsync(image);

      byte[] resizedImage 
        = await _imageService.ResizeImageAsync(image);

      string prompt 
        = _promptService.CreatePrompt(meta, userInput);

      AIResponse aiResponse 
        = await _chatService.MakeVisionRequestAsync(resizedImage, prompt);

      instagramItems.Add(new InstagramItem(
        image,
        meta,
        aiResponse));
   }

   _storageService.WriteData(outputPath, instagramItems);
}

💾 Beispielausgabe

Jedes Bild erzeugt einen JSON-Eintrag wie:

[
  {
    "ImageName": "tsjreiseblog_28-Jul-2025.jpg",
    "ImageMetaData": {
      "CaptureDate": "2025-07-28",
      "Latitude": null,
      "Longitude": null
    },
    "OpenAIResponse": {
      "RawContent": "Exploring the charming streets and historic sights of Civitavecchia, ...",
      "FormattedContent": "Exploring the charming streets and historic sights of ...",
      "InputTokens": 800,
      "OutputTokens": 94
    }
  }
]

💻 Plattformunterstützung

Variante Beschreibung Plattformen
Console App Interaktive CLI Windows, Linux, macOS
WPF App Native Desktop-UI Windows
Avalonia App Cross-Platform GUI Windows, Linux, macOS

🧑‍💻 Von WPF zu Avalonia

Ursprünglich habe ich die WPF-Version entwickelt, um schnell eine einfache, benutzerfreundliche UI für Windows bereitzustellen. Das hat super funktioniert – aber schon bald wurde klar: Eine Cross-Platform-Lösung ist nötig, besonders für macOS- und Linux-Nutzer.

Darum habe ich eine zweite Version mit Avalonia gebaut – einem UI-Framework ähnlich wie WPF, das aber überall läuft. Normalerweise würdest du nicht beide Varianten pflegen, aber für dieses Projekt war es eine tolle Lernerfahrung und ein gutes Beispiel für modulare Architektur mit geteilten Services.

📸 UI-Einblicke

🚀 Get Started

git clone https://github.com/tsjdev-apps/piccaptionr.git
cd .\piccaptionr\src\PicCaptionr.ConsoleApp
dotnet run

CI/CD

Dank GitHub Actions gibt es fertige Builds für jede App:

  • 🟩 Console App (win-x64, linux-x64, osx-x64, osx-arm64)
  • 🟦 WPF App (nur Windows)
  • 🟨 Avalonia App (Cross-Platform)

🧠 Fazit

PicCaptionr begann als kleines Tool, um während einer Weltreise hunderte Fotos zu betiteln – und ist heute ein Hilfsprogramm für Content Creator, Influencer und Reisebegeisterte.

Es ist schnell. Es ist flexibel. Und es ist Open Source.

Gib dem Projekt einen ⭐ auf GitHub und erzähle deine eigenen Fotogeschichten mit KI!

👉 GitHub Repo

Weiterempfehlen

Diesen Beitrag teilen

Wenn dir der Beitrag gefallen hat: gern weiterreichen. Gute Links dürfen sich ruhig schnell verbreiten.

Vorheriger/Nächster Beitrag

Ollama mit neuer UI – Einfacher Zugriff auf lokale KI-Modelle Vorheriger Beitrag Ollama mit neuer UI – Einfacher Zugriff auf lokale KI-Modelle Cronjobs in Azure Functions: Zeitgesteuerte Aufgaben mit dem TimerTrigger ausführen Nächster Beitrag Cronjobs in Azure Functions: Zeitgesteuerte Aufgaben mit dem TimerTrigger ausführen
Vergleiche OpenAI-Modelle Side-by-Side mit Blazor Server Vergleiche OpenAI-Modelle Side-by-Side mit Blazor Server PicCaptionr erhält ein großes Update: Jetzt mit .NET 10 und den neuesten OpenAI-Modellen PicCaptionr erhält ein großes Update: Jetzt mit .NET 10 und den neuesten OpenAI-Modellen KI-Videos mit Sora-2 und .NET erstellen KI-Videos mit Sora-2 und .NET erstellen Ollama bringt Cloud-Modelle Ollama bringt Cloud-Modelle
Lust auf ein kurzes digitales Hallo? Wenn du eine Idee teilen, eine Frage loswerden oder ein Projekt anschieben willst: mein Posteingang ist deutlich zuverlässiger als Brieftauben. apps@tsjdev-apps.de Mail schicken