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 es una gran biblioteca para trabajar con imágenes en.NET. Es rápido, fácil de usar, y tiene un montón de características. En este post, te mostraré cómo usar ImageSharp con Docker para crear un simple servicio de procesamiento de imágenes.
ImageSharp me permite trabajar sin problemas con imágenes en.NET. Es una biblioteca multiplataforma que admite una amplia gama de formatos de imagen y proporciona una API sencilla para el procesamiento de imágenes. Es rápido, eficiente y fácil de usar.
Sin embargo hay un problema en mi configuración usando Docker e ImageSharp. Cuando intento cargar una imagen de un archivo, obtengo el siguiente error: 'Acceso denegado a la ruta /wwroot/cache/ etc...' Esto es causado por las instalaciones Docker ASP.NET que no permiten el acceso de escritura al directorio de caché ImageSharp utiliza para almacenar archivos temporales.
La solución es montar un volumen en el contenedor Docker que apunte a un directorio en la máquina host. De esta manera, la biblioteca ImageSharp puede escribir en el directorio de caché sin ningún problema.
Aquí está cómo hacerlo:
mostlylucid:
image: scottgal/mostlylucid:latest
volumes:
- /mnt/imagecache:/app/wwwroot/cache
Aquí puede ver que mapeo el archivo /app/wwwroot/cache a un directorio local en mi máquina de host. De esta manera, ImageSharp puede escribir en el directorio de caché sin ningún problema.
En mi máquina Ubuntu creé un directorio /mnt/imagecache y luego corrí el comando folowing para que sea escribible (por cualquiera, sé que esto no es seguro pero no soy un gurú de Linux :))
chmod 777 -p /mnt/imagecache
En mi program.cs tengo esta línea:
builder.Services.AddImageSharp().Configure<PhysicalFileSystemCacheOptions>(options => options.CacheFolder = "cache");
Como el cacheroot predeterminado a wwwroot esto ahora escribirá en el directorio /mnt/imagecache en el equipo host.