NOTE: Apart from
(and even then it's questionable, I'm Scottish). These are machine translated in languages I don't read. If they're terrible please contact me.
You can see how this translation was done in this article.
Thursday, 01 August 2024
//Less than a minute
ImageSharp ist eine großartige Bibliothek für die Arbeit mit Bildern in.NET. Es ist schnell, einfach zu bedienen und hat viele Funktionen. In diesem Beitrag werde ich Ihnen zeigen, wie Sie ImageSharp mit Docker verwenden, um einen einfachen Bildverarbeitungsservice zu erstellen.
ImageSharp ermöglicht es mir, nahtlos mit Bildern in.NET zu arbeiten. Es ist eine plattformübergreifende Bibliothek, die eine Vielzahl von Bildformaten unterstützt und eine einfache API für die Bildverarbeitung bietet. Es ist schnell, effizient und einfach zu bedienen.
Allerdings gibt es ein Problem in meinem Setup mit Docker und ImageSharp. Wenn ich versuche, ein Bild aus einer Datei zu laden, bekomme ich folgenden Fehler: 'Zugriff verweigert auf den Pfad /wwroot/cache/ etc...' Dies wird durch Docker ASP.NET Installationen verursacht, die keinen Schreibzugriff auf das Cache-Verzeichnis erlauben ImageSharp verwendet, um temporäre Dateien zu speichern.
Die Lösung besteht darin, ein Volumen im Docker-Container zu montieren, das auf ein Verzeichnis auf der Host-Maschine zeigt. Auf diese Weise kann die ImageSharp-Bibliothek ohne Probleme in das Cache-Verzeichnis schreiben.
Hier ist, wie es zu tun:
mostlylucid:
image: scottgal/mostlylucid:latest
volumes:
- /mnt/imagecache:/app/wwwroot/cache
Hier sehe ich die Datei /app/wwwroot/cache in ein lokales Verzeichnis auf meinem Rechner. Auf diese Weise kann ImageSharp ohne Probleme in das Cache-Verzeichnis schreiben.
Auf meinem Ubuntu-Rechner habe ich ein Verzeichnis /mnt/imagecache erstellt und dann den Folowing-Befehl ausgeführt, um es schreibbar zu machen (ich weiß, dass dies nicht sicher ist, aber ich bin kein Linux-Guru :))
chmod 777 -p /mnt/imagecache
In meinem programm.cs habe ich diese Zeile:
builder.Services.AddImageSharp().Configure<PhysicalFileSystemCacheOptions>(options => options.CacheFolder = "cache");
Als Cacheroot-Standard auf wwwroot wird dies nun in das Verzeichnis /mnt/imagecache auf dem Rechner geschrieben.