¿Scripts y subidas manuales de archivos? ¿A esta altura del campeonato?

Posted on Tuesday, Sep 7, 2021 by | Bash, Fotografia

Cuando por fin me había acustumbrado a la subida automática de fotos y al espacio de almacenamiento ilimitado, Google decide terminar con esta gloria.

Entonces ¿Migro todas mis fotos y videos al NAS? Mmmm nada de eso. Si bien tengo una copia de mi archivo fotográfico en mi servidor, Google Fotos todavía sigue siendo insuperable en muchos aspectos.

this is so cute

Figura 1: El dilema del fotógrafo: “Donde meter las fotos”.

Por otra parte, lejos de acercarme a los 17Gb de almacenamiento que tengo disponible, apenas llego al 30 o 40% del total. Sin embargo el problema no es cuanto espacio tenga, sino cuan rápido lo acabe por agotar. Es decir, el volumen de datos que subo semanalmente a esta “nube” no es despreciable.

Luego de un poco de análisis acerca de mis usos y costumbres fotográficos, he llegado a la conclusión que en el 99% de los casos las fotos subidas las veo desde el celular, tableta, o como mucho, desde un smart TV. Dicho esto, una reducción de tamaño de las fotos o un cambio en el formato de los videos puede mejorar sensiblemente el espacio ocupado a expensas de arriesgarme a tener fotos con menos “posibilidades” a futuro.

Es decir, de nada me sirve tener una fotografía de más de 14 mega píxeles si no utilizo fotos en ese tamaño. En cambio la reducción a un tamaño de 3 o 4 mega píxeles podría generar un archivo mucho más liviano sin perder demasiado detalle al ampliar la fotografía. Por supuesto, esto es muy personal y cada quién tiene sus preferencias.

Lo mismo ocurre con el video. Al cambiar a un formato más moderno y con cierto cambio en el formato el tamaño se reduce sensiblemente. Esto es particularmente importante porque son los videos los que ocupan la mayor parte del espacio en mi cuenta de Google fotos, comparativamente a las fotografías.

Estos son dos sencillisimos scripts en Bash muy personales, pero que pueden ser fácilmente adaptados a las necesidades de cada quien.

Recuerden que es necesario dar atributos de ejecución antes de ejecutarlos, Ej: ‘chmod +x image-resizer.sh’ e instalar las aplicaciones ImageMagick y ffmpeg.

Script para reducir videos

Este pequeño script busca archivos .mp4 en la carpeta /Descargas los procesa y genera el nuevo video en la carpeta /Videos.

Las variables pueden ser cambiadas según conveniencia, pero como suelo procesar los archivos de mi celular, siempre utilizo las mismas opciones.

No olvidar que previamente hay que instalar ffmpeg.

#! /bin/bash

# Convierte y comprime achivos .mp4 situados en la carpeta descargas y los envia a la carpeta Videos"

srcExt="mp4"    # Extensión que será buscada en los archivos a comprimir
destExt="mp4"   # Extensión que tendrá el archivo resultante
srcDir="/media/datos/javier/Descargas/" # Directorio donde se buscarán los archivos a comprimir
destDir="/media/datos/javier/Videos/"   # Direcorio donde serán enviados los archivos
opts="-vcodec libx265 -crf 28" # Codec y opciones a utilizar

for filename in "$srcDir"/*.$srcExt; do
	basePath=${filename%.*}
	baseName=${basePath##*/}
	ffmpeg -i "$filename" $opts "$destDir"/"$baseName"."$destExt"
done

echo "Conversión de videos ${srcExt} a ${destExt} completa. Están carpeta de Videos!"

Script para reducir fotos

Este script busca archivos .jpg en la carpeta /Descargas. Reduce sus dimensiones en un 50% manteniendo su relación de aspecto y geenra los nuevos archivos en la carpeta /Pictures/resize.

Un detalle que agregué es una función para que si detecta archivos con extensión .JPG (en mayúsculas), primero renombre los archivos con extensión .jpg. Así queda todo mucho más prolijo y uniforme. No se de donde viene esa manía de Nikon de escribir los archivos y extensiones en mayúsculas. En fin.

Otro aspecto a tener en cuenta es que el script no funciona si los archivos tienen nombres con espacios en blanco. Más adelante me ocuparé de ello.

No olvidar que requiere instalar previamente ImageMagick.

#!/bin/bash

# No funciona si el nombre del archivo a procesar tiene espacios en blanco.

srcDIR="/media/datos/javier/Descargas/"
SCALE=50%   #Porcetaje de reducción a aplicar
destDIR="/media/datos/javier/Pictures/resize"
formatImg="*.jpg"

# Renombra archivos .JPG a .jpg
cd $srcDIR
for f in *.JPG
do
  mv "$f" "${f%.JPG}.jpg"
done


# Chequea la carpeta destino y la crea si esta no existe.
if [ ! -d $destDIR ]; then
    mkdir -p $destDIR
else
    echo "Directory $destDIR already exists"
fi

for img in $formatImg ; do
  target=$(echo $img | sed "s/\./_r\./")
  convert -resize $SCALE $img $destDIR/$target

Imágenes

Imagen principal de PIRO4D de Pixabay.com

Imagen del fotógrafo de Alexas_Fotos de Pixabay.com


All posts are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license.