Accediendo a archivos de imagen en nextcloud#

Este notebook demostrará cómo descargar archivos de un servidor nextcloud, cómo procesarlos localmente y subir los resultados de vuelta al servidor.

Si trabajas o estudias en la Universidad de Leipzig, puedes registrarte para obtener una cuenta en dicho servidor aquí.

from skimage.io import imread, imsave
from skimage.measure import label
import ipywidgets as widgets
import stackview

import nextcloud_client

Inicio de sesión#

Después de ejecutar la siguiente celda localmente, verás tres campos de entrada donde podrás ingresar la URL del servidor, el nombre de usuario y la contraseña.

server_widget = widgets.Text(value='https://speicherwolke.uni-leipzig.de', description='Server')
username_widget = widgets.Text(description='Username:')
password_widget = widgets.Password(description='Password')

widgets.VBox([server_widget, username_widget, password_widget])

NO presiones Shift-Enter después de ingresar el nombre de usuario y la contraseña

if username_widget.value == '':
    raise RuntimeError('Enter username and password above')
ncc = nextcloud_client.Client(server_widget.value)
ncc.login(username_widget.value, password_widget.value)
# reset password
password_widget.value = ""

Un mensaje de error típico es 401: Acceso denegado. Verifica tu nombre de usuario y contraseña.

Recuperando un archivo#

Podemos descargar un archivo a un directorio local.

# enter the source file here
remote_source_file = '/data/blobs.tif'
# enter the destination
local_file = 'blobs.tif'

ncc.get_file(remote_path=remote_source_file, 
            local_file=local_file)
True

Procesamiento de imágenes#

Como hemos descargado el archivo, el procesamiento de imágenes funciona como de costumbre.

image = imread(local_file)
stackview.insight(image)
shape(254, 256)
dtypeuint8
size63.5 kB
min8
max248
labels = label(image > image.max() / 2)
stackview.insight(labels)
shape(254, 256)
dtypeint32
size254.0 kB
min0
max64

Subiendo resultados#

Antes de subir una imagen a la nube, necesitamos guardarla localmente.

local_file_to_upload = "blobs_labels.tif"

imsave(local_file_to_upload, labels, check_contrast=False)

Subiremos el archivo a esta carpeta:

remote_folder
'/data/'
ncc.put_file(remote_folder, local_file_to_upload)
True

Solo para asegurarnos, verificamos si el archivo llegó imprimiendo nuevamente los archivos en la carpeta.

for f in ncc.list(remote_folder):
    print (f.path)
/data/blobs.tif
/data/blobs_labels.tif

Cierre de sesión#

Cuando hayas terminado, ¡cierra sesión!

ncc.logout()
True