Artículos hechos en Diciembre, 2014


¡Felices Fiestas en tiempo real!

¡Felices Fiestas en tiempo real!


Publicado por el Lunes 22 22Europe/Madrid Diciembre 22Europe/Madrid 2014 en Infografía, Mallorca, Marratxí, Software | 0 comentarios

Aprovechando lo de la composición de soles de la NASA he cogido este almendro del torrente de al lado de casa que fotografié hace meses y le he colocado unos cuantos. También puede verse actualizar en tiempo real.

Como cada año, los adornos navideños también sirven para felicitar a los palmesanos por su patrón del 20 de enero, Sant Sebastià xDD

¡Felices Fiestas!

¿Qué es?

En esta página se pueden ver imágenes actualizadas generadas por un programa que creé. Se descargan una serie de imágenes de las agencias ESA y NASA captadas por la sonda SOHO y se crean estas composiciones. Todas las que se ven en esta web son del sol tal como se encuentra en estos momentos, incluidos los fondos de los títulos.

Recreación del videojuego Nemesis 3 de MSX. Descargar


Esta es más simple pero me gusta como queda. Descargar


Los soles de colores corresponden a diferentes longitudes de onda de luz ultravioleta extrema (estas imágenes son PNGs con transparencia):

Hice esta foto en el torrente Coanegra, cerca de mi casa.


Algunas imágenes originales que provee la sonda SOHO usando diferentes instrumentos:

Imágenes del proceso

La primera de las dos imágenes siguientes procede de un coronógrafo con el que va equipado el satélite, un aparato que capta luz ultravioleta extrema (invisible a nuestros ojos pero "teñida" aquí de rojo) ayudado por un disco colocado enfrente, a modo de simulacro de eclipse para que la imagen no resulte cegada:

El proceso siguiente es realizado automáticamente por mi programa, un script bash que el servidor ejecuta cada pocos minutos para comprobar si hay nuevas tomas (son solo varias al día y no se realizan a intervalos demasiado regulares), y de haberlas las descarga y trata con la ayuda de la utilidad ImageMagick.

Realizo la máscara para aislar el sol en un fichero PNG con transparencia. Selecciona los colores del sol, los convierte a niveles de grises y le aplica un difuminado gausiano para agrandar el contorno de la máscara:

Finalmente cambia el tamaño de la corona, recorta la imagen, superpone el sol dentro de la corona y añade las firmas:

Descargar Descargar Descargar

Con el caso de las composiciones más complejas pasé a usar Inkscape por línea de comandos. Mientras lo diseño uso imágenes "estáticas" locales, pero al subirlo al servidor basta sustituir las rutas en el fichero SVG (este formato es texto plano)

Hay aplicaciones para poder colocarlas como fondo de escritorio que se actualiza. En el escritorio de Linux KDE se hace con el botón derecho del ratón sobre el escritorio -> Fondo de pantalla -> Presentación -> Carpetas personalizadas -> Indicarle donde está la imagen que se descarga el script, o indicar la URL de la imagen.

Observaciones

  • En ocasiones aparecen dentro del sol unos perfectos cuadrados negros, bastante pequeños. Creo que se debe a que la resolución que obtienen ESA/NASA originalmente es muchísimo mayor, se compondría a partir de cientos de fotos.
  • Hay épocas en las que el encuadre de las imágenes cambia y tengo que ajustarlo manualmente, por lo que puede que no se vea bien.
  • A veces las imágenes de la NASA tienen fallos de transmisión desde el satélite, o la foto no se realiza correctamente.

El script

Puedes descargarlo:

#!/bin/bash
# Composición con las imágenes de la sonda SOHO de la NASA:
# http://sohowww.nascom.nasa.gov/data/realtime-images.html
# URL: http://airsynth.es/nasa
# Autor: Marce Luna

# IMPORTANTE: No ejecutar con usuario root, si no cron no podrá modificar los ficheros
# Para volver a crear las imágenes manualmante hay que borrarlas

# Para corregir el desplazamiento de sol me fue bien modificar la máscara en Gimp poniendo debajo la imagen original de la NASA

limpiarFecha() {
	fecha="$1"
	salida=$(echo $fecha | tr -d '\r')
	salida="${salida/Last-Modified: /}"
	echo "$salida"
}

ficheroModificado() {
	url="$1"
	destino="$2"
	echo "Comprobando modificación: $url"
	if [ -f "$destino" ]; then
		longitudFicheroAnterior=$(stat -c%s "$destino")
	else
		longitudFicheroAnterior="no existe"
	fi
	longitudFicheroRemoto="$(curl -s --head "$url" 2>&1 | grep '^Content-Length: ')"
	longitudFicheroRemoto=$(echo $longitudFicheroRemoto | tr -d '\r')
	longitudFicheroRemoto="${longitudFicheroRemoto/Content-Length: /}"
	if [ "$longitudFicheroRemoto" != "$longitudFicheroAnterior" ]; then
		echo "   El fichero ha sido modificado"
		echo "   Longitud remoto: $longitudFicheroRemoto"
		echo "   Longitud anterior: $longitudFicheroAnterior"
		return 1
	else
		echo "   El fichero remoto no ha cambiado"
		return 0
	fi
}

procesarImagenes() {
	echo "Agrandando la corona"
	convert "$temp/nasa-soho-sun-c2-latest.jpg" -resize "1990"x "$temp/nasa-soho-sun-c2-big-latest.png"

	echo "Recortando la imagen a proporción 16:9"
	convert "$temp/nasa-soho-sun-c2-big-latest.png" -gravity Center -crop 1990x1119+0+0 +repage "$temp/nasa-soho-sun-c2-latest-16-9.png"

	echo "Colocando firmas"
	composite -gravity SouthWest nasa-logo.png -geometry 130x+50+80 "$temp/nasa-soho-sun-c2-latest-16-9.png" "$temp/fondo.png"
	composite -gravity SouthEast airsynth.png -geometry +0+35 "$temp/fondo.png" "$temp/fondo-sin-hora.png"
	echo "Colocando hora"
	convert "$temp/fondo-sin-hora.png" -pointsize 19 -font "Arial" -fill "rgba(255,255,255,0.4)" -gravity SouthWest -annotate +190+121 "$horaActualFichero" "$temp/nasa-soho-sun-c2-big-latest.png"
	# convert "$temp/fondo-sin-hora.png" -pointsize 22 -draw "gravity SouthWest fill white text 190,121 '$horaActualFichero'" "$temp/nasa-soho-sun-c2-big-latest.png"

	# El primer parámetro es el código que le da la NASA a la imagen y el segundo es el valor alcance de la "varita mágica". En airsynth.es va bien un 35 y en mi Kubuntu 14.10 un 120
	if [ "$servidor" == "local" ]; then
		# amarillo
		procesarSol 284 118
		# verde
		procesarSol 195 119
		# azul
		procesarSol 171 115
		# rojo
		procesarSol 304 110
	else
		# amarillo. Estaba a 26
		procesarSol 284 32
		# verde
		procesarSol 195 34
		# azul
		procesarSol 171 30
		# rojo
		procesarSol 304 25
	fi
	rm $temp/nasa-soho-sun-c2-big-latest.png
	rm $temp/nasa-soho-sun-c2-latest-16-9.png
	rm $temp/fondo-sin-hora.png
	rm $temp/fondo.png
}

procesarSol() {
	echo "Sol $1":
	echo "   Descargando imagen del sol"
	wget "http://sohowww.nascom.nasa.gov/data/realtime/eit_$1/1024/latest.jpg" -O "$temp/nasa-soho-sun-eit_$1-latest.jpg"

	echo "   Borrando la hora del sol"
	convert -draw "rectangle 3,997 230,1021" -fill black "$temp/nasa-soho-sun-eit_$1-latest.jpg" "$temp/nasa-soho-sun-eit_$1-latest.png"

	echo "   Máscara para recortar el sol"
	echo "      Creando"
	convert "$temp/nasa-soho-sun-eit_$1-latest.png" \( +clone -fx 'p{0,0}' \) -compose Difference -composite -modulate $2,0 -alpha off $temp/difference.png
	echo "      Modificando"
	convert $temp/difference.png -threshold 7% -blur 0x15 $temp/halo_mask.png
	echo "      Sumando la máscara a la redonda"
	composite -gravity Center round_sun_mask.png $temp/halo_mask.png $temp/final_mask.png
	echo "      Aplicando"
	convert "$temp/nasa-soho-sun-eit_$1-latest.png" $temp/final_mask.png -alpha Off -compose CopyOpacity -composite $img/nasa-soho-sun-eit_$1-latest-transparent.png
	echo "   Generando versión reducida del sol transparente"
	convert "$img/nasa-soho-sun-eit_$1-latest-transparent.png" -resize x320 -interlace line $img/nasa-soho-sun-eit_$1-latest-transparent-small.png

	echo "   Insertando una imagen dentro de la otra"
	echo "   2015-12-25: Eliminado en el parámetro -geometry un desplazamiento hacia abajo (-0+60 tenía). Parece que a veces se mueve."
	composite -gravity Center -geometry -0+0 -quality 85 -interlace line "$img/nasa-soho-sun-eit_$1-latest-transparent.png" "$temp/nasa-soho-sun-c2-big-latest.png" "$img/nasa-soho-sun-composition-eit_$1-c2-latest.jpg"

	echo "   Generándola a 720"
	convert "$img/nasa-soho-sun-composition-eit_$1-c2-latest.jpg" -resize x720 -quality 70 -interlace line "$img/nasa-soho-sun-composition-eit_$1-c2-latest-720.jpg"

	echo "   Borrando imágenes temporales"
	rm "$temp/nasa-soho-sun-eit_$1-latest.png"
}

echo > ejecutando.flag
directorioScript="/var/www/vhosts/binfo.es/airsynth.es/img/nasascript/"
# Variable según estemos en local o en servidor
if [ -d "$directorioScript" ]; then
	servidor="remoto"
	cd "$directorioScript"
else
	servidor="local"
fi
servidor="remoto"
echo "Ya no es necesario el ajuste diferente de "varita mágica" entre local y remoto"
echo "EJECUTANDO EN ORDENADOR $servidor"
img="../nasa"
temp="../nasa/tmp"

horaActual="$(date "+%Y-%m-%d %H:%M %Z")"
echo "$horaActual" > ejecucionultima.txt
if [ ! -d "$img" ]; then mkdir "$img"; fi
if [ ! -d "$temp" ]; then mkdir "$temp"; fi

ficheroModificado "http://sohowww.nascom.nasa.gov/data/realtime/eit_304/1024/latest.jpg" "$temp/nasa-soho-sun-eit_304-latest.jpg"
cambio="$?"
if [ "$cambio" == "0" ]; then
	ficheroModificado "http://sohowww.nascom.nasa.gov/data/realtime/c2/1024/latest.jpg" "$temp/nasa-soho-sun-c2-latest.jpg"
	cambio="$?"
else
	solCambiado="1"
fi
if [ "$cambio" == "1" ]; then
	horaSol="$(curl -s --head "http://sohowww.nascom.nasa.gov/data/realtime/eit_304/1024/latest.jpg" 2>&1 | grep '^Last-Modified: ')"
	horaSol="$(limpiarFecha "$horaSol")"
	horaSolComp="$(date --date="$horaSol" "+%Y%m%d%H%M")"
	horaSol="$(date --date="$horaSol" "+%Y-%m-%d %H:%M %Z")"
	horaCorona="$(curl -s --head "$temp/nasa-soho-sun-c2-latest.jpg" 2>&1 | grep '^Last-Modified: ')"
	horaCorona="$(limpiarFecha "$horaCorona")"
	horaCoronaComp="$(date --date="$horaCorona" "+%Y%m%d%H%M")"
	horaCorona="$(date --date="$horaCorona" "+%Y-%m-%d %H:%M %Z")"
	echo "   Hora sol: $horaSol"
	echo "   Hora corona: $horaCorona"
	if [ "$horaSolComp" -ge "$horaCoronaComp" ]; then
		horaActualFichero="$horaSol"
		echo "   El sol es más actual"
	else
		horaActualFichero="$horaCorona"
		echo "   La corona es más actual"
	fi
	horaMensaje="Imágenes del sol de la sonda SOHO de la ESA/NASA en tiempo real a "
# 	horaActualFichero="$horaMensaje$horaActualFichero"
	horaActualFichero="$horaMensaje$horaActual"
	horaSol="$horaMensaje$horaSol"
	echo "Descargando imagen de la corona"
	wget "http://sohowww.nascom.nasa.gov/data/realtime/c2/1024/latest.jpg" -O "$temp/nasa-soho-sun-c2-latest.jpg"
	echo $horaActualFichero >> listaactualizaciones.txt
	procesarImagenes
	if [ "$solCambiado" == "1" ]; then
		# Árbol de navidad
		echo "Generando árbol de navidad en tiempo real:"
		inkscape "nasa-realtime-christmas-tree.svg" --export-png="$temp/arbol.png"
		convert "$temp/arbol.png" -quality 85 -interlace line -pointsize 58 -font "Arial" -fill "rgba(255,255,255,0.2)" -gravity SouthWest -annotate +415+206 "$horaSol" "$img/nasa-realtime-christmas-tree.jpg"
		# Listar tipografías: convert -list font
		convert "$temp/arbol.png" -quality 85 -interlace line -pointsize 64 -draw "gravity SouthWest fill white text 415,206 '$horaSol'" "$img/nasa-realtime-christmas-tree.jpg"
		convert "$img/nasa-realtime-christmas-tree.jpg" -resize x720 -quality 85 -interlace line "$img/nasa-realtime-christmas-tree-720.jpg"
		rm "$temp/arbol.png"

		# Nemesis 3
		echo "Generando fake Nemesis 3 en tiempo real:"
		inkscape "esa-nasa-nemesis.svg" --export-png="$temp/nemesis3.png"
		convert "$temp/nemesis3.png" -quality 85 -interlace line -pointsize 38 -font "Arial" -fill "rgba(255,255,255,0.7)" -gravity SouthEast -annotate +15+20 "$horaSol" "$img/esa-nasa-realtime-nemesis3.jpg"
	fi
fi
cp ../nasa/nasa-soho-sun-composition-eit_171-c2-latest-720.jpg /var/www/vhosts/binfo.es/airsynth.es/wp-content/uploads/2014/12/nasa-soho-sun-composition-eit_171-c2-latest.jpg

rm "ejecutando.flag"
echo "Terminado"
Ir a su página
La otra pantalla, o como un chaval deshonra un deportista español de éxito

La otra pantalla, o como un chaval deshonra un deportista español de éxito


Publicado por el Viernes 19 19Europe/Madrid Diciembre 19Europe/Madrid 2014 en Amigos, Humor, Infografía, Retro | 0 comentarios

Fernando Martín mancillado

"Con el lamentable aspecto que podéis apreciar", como decía el redactor de la Micromanía (me parece increíble que exista aun la revista mensual), dejé al posterior y tristemente fallecido en un accidente de tráfico Fernando Martín, jugador español de la NBA. Me creí el rey del mundo cuando lo publicaron y fui a buscar mi ejemplar a la papelería un buen día de verano de 1989, tras convencerme un amigo de por aquel entonces (Juan José Seda: Hola! si lees esto) de que debíamos enviarlo. Acepté no muy convencido, creo recordar. Tenía 14 añitos...

La pantalla de la que partí pertenece al juego Fernando Martín Basket Master, de Spectrum. Se lanzó para más plataformas contemporáneas, y tuvo éxito incluso allende nuestras fronteras.

Víctor Ruiz, el dueño de Dinamic Software, la compañía que creó el juego, me lo firmó en Mallorca Game 2015.

Le agradezco mucho a Juanjo (el otro, no mi hermano), que me animase a mandarla, pero ya podía haber puesto mi nombre completo en la misiva que acompañaba a mi roñoso cassette, de ahí que al leerlo la gente que lo recibió se gastase la guasa que se aprecia en el montaje del comienzo xDD. Pero ¿y lo que nos reimos?

Micromanía - PortadaMicromanía - Pagina

Como de costumbre, cogí una cinta con música grabada por mis padres (lo siento papá, no se me ocurrió comprar una xDD) y grabé la imagen varias veces una tras otra por seguridad. Ya de por si aquel vetusto medio fallaba como ejemplo que se debería usar en vez de la recurrida escopeta de feria. Un cargador en lenguaje BASIC mostraba la imagen, no sin antes poner a prueba tu paciencia, de haber estado acostumbrado a las escalofriantes velocidades de los aparatejos actuales. Se quedaba uno como bobo mirando ese entrelazado a tres tercios que aparecía gradualmente con posterior inundación de colores al tiempo que los bits acribillando traducidos en sonido cambiaban de ritmo...

Art Studio para Spectrum

A veces pensaba si no sería posible dibujar en mi Spectrum imitando los pitidos del cassette silbando, en vez de usar mi copia piratilla del magnífico programa de dibujo para Spectrum Art Studio, para mi el Potochó de la época. Aquí un pollo pegándose la matada dibujando las tramas ajedrezísticas a mano, teniendo el programa opción para ello, no sé, aunque bien pensado, así debí hacer yo los pelos de barba y piernas a nuestro extrañamente homenajeado:

Pido perdón a Emilio Rubio porque creo que no le devolví el cassete original del juego :/ Además está en paradero desconocido, tanto el original de Emilio como mi copia de mi pantalla. Tendría que revisar una caja de cintas de la época que anda por la buhardilla junto a mi colección retro de ordenadores y software. No sé si apostar por la de los éxitos de la tele de la caja de ahorros "Sa Nostra", con Orzowei, la abeja Maya, La casa de la pradera, Mazinger Z, la gallina Cocohuá (spelling?) y algunos más. ¿Quién me iba a decir que años más tarde, además de "financiar" mi primer Spectrum (que estuvo a punto de ser un Oric Atmos) Sa Nostra nos permitiría montar en sus instalaciones nuestra "feria" RetroMallorca? Pero creo que será más factible directamente animarme a aplicarle un proyecto que leí hace un tiempo que consiste en recuperar el formato original de Spectrum de las obras del concurso "Píxel a Píxel", de la otra revista de la editorial, MicroHobby, dedicada al Spectrum y creo que una de las más recordadas de la época por su encanto y calidad de sus artículos técnicos.

No preguntéis por qué dibujé esa salchicha gigante (que todo el mundo dice con razón parecer más una morcilla o butifarrón) y un melón porque no sé qué leches me estaba pasando por la cabeza en aquel momento. El caso es que les gustó xDD.

Aprovecho para pedir a quien lea esto y tenga un número 14 de la Micromanía tocha, de la segunda época, la de tamaño periódico (muy chulo pero un fastidio), que me lo venda por favor, porque la que tengo está hecha una pena y luego tengo un triste recorte que me regalaron.

Habrá que meter alguna foto en la que el pobre hombre no salga cuadriculado, ¿no crees?

Por último, naturalmente agradezco muchísimo que me lo publicasen y es ridículo que me queje al cabo de tanto tiempo, pero la pantalla salió en la revista con un defecto bastante grave y en todos los ejemplares. Como un borrón, que nunca vi en esa sección ni otras pantallas de la revista. No me explico por qué. La aquí colocada en grande está retocada.

Esos anuncios ficticios eran las cuatro grandes plataformas informáticas incompatibles entre si que competían, el equivalente actual de Windows Vs Mac Vs Linux

Ahí, esos píxeles hermosotes! El juego era español. Anunciaban la función Repetición con zoom a cámara lenta a bombo y platillo. Harina de otro costal hubiera sido que lo intentase acelerar un ordenador de estos de tiempos remotos xD. En esta captura sí que corresponde la marca con la máquina que lo ejecuta.

Nota: He robado algunas fotos en este post, algunas están firmadas, las demás espero que no se enfaden mucho sus autores.

Nota 2: Este es el post número 34 de este año en mi blog, yeah!

Ir a su página

¿Qué es?

En esta página se pueden ver imágenes actualizadas generadas por un programa que creé. Se descargan una serie de imágenes de las agencias ESA y NASA captadas por la sonda SOHO y se crean estas composiciones. Todas las que se ven en esta web son del sol tal como se encuentra en estos momentos, incluidos los fondos de los títulos.

Recreación del videojuego Nemesis 3 de MSX. Descargar


Esta es más simple pero me gusta como queda. Descargar


Los soles de colores corresponden a diferentes longitudes de onda de luz ultravioleta extrema (estas imágenes son PNGs con transparencia):

Hice esta foto en el torrente Coanegra, cerca de mi casa.


Algunas imágenes originales que provee la sonda SOHO usando diferentes instrumentos:

Imágenes del proceso

La primera de las dos imágenes siguientes procede de un coronógrafo con el que va equipado el satélite, un aparato que capta luz ultravioleta extrema (invisible a nuestros ojos pero "teñida" aquí de rojo) ayudado por un disco colocado enfrente, a modo de simulacro de eclipse para que la imagen no resulte cegada:

El proceso siguiente es realizado automáticamente por mi programa, un script bash que el servidor ejecuta cada pocos minutos para comprobar si hay nuevas tomas (son solo varias al día y no se realizan a intervalos demasiado regulares), y de haberlas las descarga y trata con la ayuda de la utilidad ImageMagick.

Realizo la máscara para aislar el sol en un fichero PNG con transparencia. Selecciona los colores del sol, los convierte a niveles de grises y le aplica un difuminado gausiano para agrandar el contorno de la máscara:

Finalmente cambia el tamaño de la corona, recorta la imagen, superpone el sol dentro de la corona y añade las firmas:

Descargar Descargar Descargar

Con el caso de las composiciones más complejas pasé a usar Inkscape por línea de comandos. Mientras lo diseño uso imágenes "estáticas" locales, pero al subirlo al servidor basta sustituir las rutas en el fichero SVG (este formato es texto plano)

Hay aplicaciones para poder colocarlas como fondo de escritorio que se actualiza. En el escritorio de Linux KDE se hace con el botón derecho del ratón sobre el escritorio -> Fondo de pantalla -> Presentación -> Carpetas personalizadas -> Indicarle donde está la imagen que se descarga el script, o indicar la URL de la imagen.

Observaciones

  • En ocasiones aparecen dentro del sol unos perfectos cuadrados negros, bastante pequeños. Creo que se debe a que la resolución que obtienen ESA/NASA originalmente es muchísimo mayor, se compondría a partir de cientos de fotos.
  • Hay épocas en las que el encuadre de las imágenes cambia y tengo que ajustarlo manualmente, por lo que puede que no se vea bien.
  • A veces las imágenes de la NASA tienen fallos de transmisión desde el satélite, o la foto no se realiza correctamente.

El script

Puedes descargarlo:

#!/bin/bash
# Composición con las imágenes de la sonda SOHO de la NASA:
# http://sohowww.nascom.nasa.gov/data/realtime-images.html
# URL: http://airsynth.es/nasa
# Autor: Marce Luna

# IMPORTANTE: No ejecutar con usuario root, si no cron no podrá modificar los ficheros
# Para volver a crear las imágenes manualmante hay que borrarlas

# Para corregir el desplazamiento de sol me fue bien modificar la máscara en Gimp poniendo debajo la imagen original de la NASA

limpiarFecha() {
	fecha="$1"
	salida=$(echo $fecha | tr -d '\r')
	salida="${salida/Last-Modified: /}"
	echo "$salida"
}

ficheroModificado() {
	url="$1"
	destino="$2"
	echo "Comprobando modificación: $url"
	if [ -f "$destino" ]; then
		longitudFicheroAnterior=$(stat -c%s "$destino")
	else
		longitudFicheroAnterior="no existe"
	fi
	longitudFicheroRemoto="$(curl -s --head "$url" 2>&1 | grep '^Content-Length: ')"
	longitudFicheroRemoto=$(echo $longitudFicheroRemoto | tr -d '\r')
	longitudFicheroRemoto="${longitudFicheroRemoto/Content-Length: /}"
	if [ "$longitudFicheroRemoto" != "$longitudFicheroAnterior" ]; then
		echo "   El fichero ha sido modificado"
		echo "   Longitud remoto: $longitudFicheroRemoto"
		echo "   Longitud anterior: $longitudFicheroAnterior"
		return 1
	else
		echo "   El fichero remoto no ha cambiado"
		return 0
	fi
}

procesarImagenes() {
	echo "Agrandando la corona"
	convert "$temp/nasa-soho-sun-c2-latest.jpg" -resize "1990"x "$temp/nasa-soho-sun-c2-big-latest.png"

	echo "Recortando la imagen a proporción 16:9"
	convert "$temp/nasa-soho-sun-c2-big-latest.png" -gravity Center -crop 1990x1119+0+0 +repage "$temp/nasa-soho-sun-c2-latest-16-9.png"

	echo "Colocando firmas"
	composite -gravity SouthWest nasa-logo.png -geometry 130x+50+80 "$temp/nasa-soho-sun-c2-latest-16-9.png" "$temp/fondo.png"
	composite -gravity SouthEast airsynth.png -geometry +0+35 "$temp/fondo.png" "$temp/fondo-sin-hora.png"
	echo "Colocando hora"
	convert "$temp/fondo-sin-hora.png" -pointsize 19 -font "Arial" -fill "rgba(255,255,255,0.4)" -gravity SouthWest -annotate +190+121 "$horaActualFichero" "$temp/nasa-soho-sun-c2-big-latest.png"
	# convert "$temp/fondo-sin-hora.png" -pointsize 22 -draw "gravity SouthWest fill white text 190,121 '$horaActualFichero'" "$temp/nasa-soho-sun-c2-big-latest.png"

	# El primer parámetro es el código que le da la NASA a la imagen y el segundo es el valor alcance de la "varita mágica". En airsynth.es va bien un 35 y en mi Kubuntu 14.10 un 120
	if [ "$servidor" == "local" ]; then
		# amarillo
		procesarSol 284 118
		# verde
		procesarSol 195 119
		# azul
		procesarSol 171 115
		# rojo
		procesarSol 304 110
	else
		# amarillo. Estaba a 26
		procesarSol 284 32
		# verde
		procesarSol 195 34
		# azul
		procesarSol 171 30
		# rojo
		procesarSol 304 25
	fi
	rm $temp/nasa-soho-sun-c2-big-latest.png
	rm $temp/nasa-soho-sun-c2-latest-16-9.png
	rm $temp/fondo-sin-hora.png
	rm $temp/fondo.png
}

procesarSol() {
	echo "Sol $1":
	echo "   Descargando imagen del sol"
	wget "http://sohowww.nascom.nasa.gov/data/realtime/eit_$1/1024/latest.jpg" -O "$temp/nasa-soho-sun-eit_$1-latest.jpg"

	echo "   Borrando la hora del sol"
	convert -draw "rectangle 3,997 230,1021" -fill black "$temp/nasa-soho-sun-eit_$1-latest.jpg" "$temp/nasa-soho-sun-eit_$1-latest.png"

	echo "   Máscara para recortar el sol"
	echo "      Creando"
	convert "$temp/nasa-soho-sun-eit_$1-latest.png" \( +clone -fx 'p{0,0}' \) -compose Difference -composite -modulate $2,0 -alpha off $temp/difference.png
	echo "      Modificando"
	convert $temp/difference.png -threshold 7% -blur 0x15 $temp/halo_mask.png
	echo "      Sumando la máscara a la redonda"
	composite -gravity Center round_sun_mask.png $temp/halo_mask.png $temp/final_mask.png
	echo "      Aplicando"
	convert "$temp/nasa-soho-sun-eit_$1-latest.png" $temp/final_mask.png -alpha Off -compose CopyOpacity -composite $img/nasa-soho-sun-eit_$1-latest-transparent.png
	echo "   Generando versión reducida del sol transparente"
	convert "$img/nasa-soho-sun-eit_$1-latest-transparent.png" -resize x320 -interlace line $img/nasa-soho-sun-eit_$1-latest-transparent-small.png

	echo "   Insertando una imagen dentro de la otra"
	echo "   2015-12-25: Eliminado en el parámetro -geometry un desplazamiento hacia abajo (-0+60 tenía). Parece que a veces se mueve."
	composite -gravity Center -geometry -0+0 -quality 85 -interlace line "$img/nasa-soho-sun-eit_$1-latest-transparent.png" "$temp/nasa-soho-sun-c2-big-latest.png" "$img/nasa-soho-sun-composition-eit_$1-c2-latest.jpg"

	echo "   Generándola a 720"
	convert "$img/nasa-soho-sun-composition-eit_$1-c2-latest.jpg" -resize x720 -quality 70 -interlace line "$img/nasa-soho-sun-composition-eit_$1-c2-latest-720.jpg"

	echo "   Borrando imágenes temporales"
	rm "$temp/nasa-soho-sun-eit_$1-latest.png"
}

echo > ejecutando.flag
directorioScript="/var/www/vhosts/binfo.es/airsynth.es/img/nasascript/"
# Variable según estemos en local o en servidor
if [ -d "$directorioScript" ]; then
	servidor="remoto"
	cd "$directorioScript"
else
	servidor="local"
fi
servidor="remoto"
echo "Ya no es necesario el ajuste diferente de "varita mágica" entre local y remoto"
echo "EJECUTANDO EN ORDENADOR $servidor"
img="../nasa"
temp="../nasa/tmp"

horaActual="$(date "+%Y-%m-%d %H:%M %Z")"
echo "$horaActual" > ejecucionultima.txt
if [ ! -d "$img" ]; then mkdir "$img"; fi
if [ ! -d "$temp" ]; then mkdir "$temp"; fi

ficheroModificado "http://sohowww.nascom.nasa.gov/data/realtime/eit_304/1024/latest.jpg" "$temp/nasa-soho-sun-eit_304-latest.jpg"
cambio="$?"
if [ "$cambio" == "0" ]; then
	ficheroModificado "http://sohowww.nascom.nasa.gov/data/realtime/c2/1024/latest.jpg" "$temp/nasa-soho-sun-c2-latest.jpg"
	cambio="$?"
else
	solCambiado="1"
fi
if [ "$cambio" == "1" ]; then
	horaSol="$(curl -s --head "http://sohowww.nascom.nasa.gov/data/realtime/eit_304/1024/latest.jpg" 2>&1 | grep '^Last-Modified: ')"
	horaSol="$(limpiarFecha "$horaSol")"
	horaSolComp="$(date --date="$horaSol" "+%Y%m%d%H%M")"
	horaSol="$(date --date="$horaSol" "+%Y-%m-%d %H:%M %Z")"
	horaCorona="$(curl -s --head "$temp/nasa-soho-sun-c2-latest.jpg" 2>&1 | grep '^Last-Modified: ')"
	horaCorona="$(limpiarFecha "$horaCorona")"
	horaCoronaComp="$(date --date="$horaCorona" "+%Y%m%d%H%M")"
	horaCorona="$(date --date="$horaCorona" "+%Y-%m-%d %H:%M %Z")"
	echo "   Hora sol: $horaSol"
	echo "   Hora corona: $horaCorona"
	if [ "$horaSolComp" -ge "$horaCoronaComp" ]; then
		horaActualFichero="$horaSol"
		echo "   El sol es más actual"
	else
		horaActualFichero="$horaCorona"
		echo "   La corona es más actual"
	fi
	horaMensaje="Imágenes del sol de la sonda SOHO de la ESA/NASA en tiempo real a "
# 	horaActualFichero="$horaMensaje$horaActualFichero"
	horaActualFichero="$horaMensaje$horaActual"
	horaSol="$horaMensaje$horaSol"
	echo "Descargando imagen de la corona"
	wget "http://sohowww.nascom.nasa.gov/data/realtime/c2/1024/latest.jpg" -O "$temp/nasa-soho-sun-c2-latest.jpg"
	echo $horaActualFichero >> listaactualizaciones.txt
	procesarImagenes
	if [ "$solCambiado" == "1" ]; then
		# Árbol de navidad
		echo "Generando árbol de navidad en tiempo real:"
		inkscape "nasa-realtime-christmas-tree.svg" --export-png="$temp/arbol.png"
		convert "$temp/arbol.png" -quality 85 -interlace line -pointsize 58 -font "Arial" -fill "rgba(255,255,255,0.2)" -gravity SouthWest -annotate +415+206 "$horaSol" "$img/nasa-realtime-christmas-tree.jpg"
		# Listar tipografías: convert -list font
		convert "$temp/arbol.png" -quality 85 -interlace line -pointsize 64 -draw "gravity SouthWest fill white text 415,206 '$horaSol'" "$img/nasa-realtime-christmas-tree.jpg"
		convert "$img/nasa-realtime-christmas-tree.jpg" -resize x720 -quality 85 -interlace line "$img/nasa-realtime-christmas-tree-720.jpg"
		rm "$temp/arbol.png"

		# Nemesis 3
		echo "Generando fake Nemesis 3 en tiempo real:"
		inkscape "esa-nasa-nemesis.svg" --export-png="$temp/nemesis3.png"
		convert "$temp/nemesis3.png" -quality 85 -interlace line -pointsize 38 -font "Arial" -fill "rgba(255,255,255,0.7)" -gravity SouthEast -annotate +15+20 "$horaSol" "$img/esa-nasa-realtime-nemesis3.jpg"
	fi
fi
cp ../nasa/nasa-soho-sun-composition-eit_171-c2-latest-720.jpg /var/www/vhosts/binfo.es/airsynth.es/wp-content/uploads/2014/12/nasa-soho-sun-composition-eit_171-c2-latest.jpg

rm "ejecutando.flag"
echo "Terminado"
Ir a su página
Lo mejor que oí en noviembre

Lo mejor que oí en noviembre


Publicado por el Lunes 1 01Europe/Madrid Diciembre 01Europe/Madrid 2014 en Amigos, Música, Tops | 1 comentario

Que si cambio climático sí que si no. Yo me pongo mi lista y ya veremos...

Ir a su página