Aritmética sencilla con bash
VALOR1="123"
VALOR2="456"
let "SUMA=${VALOR1}+${VALOR2}"
División con decimales, imposible de hacer con bash, hay que utilizar bc
PROPORCION=`bc <<< "scale=10; ${VALOR1}/${VALOR2}"`
Conversión de un número decimal a entero con bc
ENTERO=`"bc <<< "(${VALOR1}*${VALOR2}+0.5)/1"`
Etiquetas
555
74HC04
74HC14
74HC165
74LS04
acentos
ADC10
Amstrad
archivo
arduino
aristóteles
armbian
array
ass
at
backup
base64
bash
Basho
bc
beethoven
Biblia
blog
bucle
c
c++
c++11
c++17
C005
cadena
Carmina Burana
casting
CD4017
CD4040
Cine
clases
Colores
connect
Consolación a Helvia
Consolación a Marcia
Consolación a Polibio
constante
corsair
CPC
Cristal 32Khz
css
cursor mouse
cut
daemon
date
dead keys
Debian
directorio
disco duro
DS32kHz
electricidad
Electrónica
ensamblador
entryList
epicureismo
Estadística
estoicismo
felicidad
ffmpeg
filePath
filosofia
Filosofía
firefox
flac
for
fstab
funcion
Gargantúa
gastronomía
gilgamesh
Ginott
gmp
gpt
grep
gtts
Hobbes
hotkeys
html
imagemagick
inline
Javascript
kde
kernel modulos
latex
ldr
lib-notify
Linux
Literatura
ludoteca
macro
mapa de bits
Matroska
mega
Microsoft Word
Milan Kundera
mkvextract
mkvinfo
mount
mp3
mplayer
MSP430
msp430F5529
MSP432
Multimedia
Musica
oop
orange_pi
pato
PIR
PL9823
Platón
poesía
POO en C++
pulseaudio
puntero
PWM
pygame
pyqt
python
QAction
qApp
QApplication
QByteArray
QDialog
Qdir
QFile
QFileDialog
QImage
qlabel
QList
QListWidget
QMessagebox
QMouseEvent
qpainter
QPalette
QPixmap
QProcess
QRegularExpression
QRegularExpressionMatchIterator
QString
QStringList
Qt
qt5
QToolbar
quijote
QVector
qwidget
R
Rabelais
ratón
relé
Resonador cerámico
samba
San Agustín
screen
Séneca
signal
slot
smart
smartctl
sox
srt
static const
stdarg.h
subtítulos
Symbian
tar
teléfonos móviles
temperatura
temperatura cpu
Temporizador
tesseract
Timer
timestamp
Trigonometría
tts
tutorial
uid
unicode
user
USI
va_arg
va_end
va_list
va_start
velocidad ventilador
Voltaire
wallpaper
xboxdrv
xinput
xrandr
Z80
zip
miércoles, mayo 21, 2014
Creando wallpapers en doble pantalla con bash e imagemagick
1. Descripción de las pantallas
Nota: El script no está optimizado para que sea más fácil de entender y modificar.
- Pantalla principal: 22 pulgadas, 1920x1080.
- Pantalla secundaria: 19 pulgadas, 1440x900.
- Físicamente la pantalla secundaria esta 1cm por debajo de la principal.
- La densidad de pixels de ambas pantallas es diferente, por lo que hay que hacer algunos cálculos para que las imágenes encajen.
2. Cálculo del tamaño de las imágenes.
- La pantalla de 22 pulgadas, 1920x1080 tiene un tamaño de 477mm x 269 mm (4 pixels por mm)
- La pantalla de 19 pulgadas, 1440x900 mide 408mm x 255mm (3.5 pixels por mm)
- Para se vea bien la imagen de la pantalla de 19 pulgadas debe medir:
3. Descripción del proceso
- La imagen original es de 16 megapixels (4608x3456)
- Editar la imagen con gimp y recortarla con una proporción fija de 3360x1180. (1920+1440 de ancho y 1080 más 100 pixels de margen).
- Exportarla como TIFF para evitar pérdidas por compresión.
- Editar las variables del script según convenga. El resultado son dos imágenes (1920x1080 y 1440x900) que encajan una con la otra.
Nota: El script no está optimizado para que sea más fácil de entender y modificar.
#!/bin/bash ################################################ ### Variables que siempre hay que modificar ### # RECUERDA: La imagen a recortar es con la proporción 3360:1080 FILENAME="pic04.tiff" #Ajuste de la imagen de la pantalla 1 para que encaje con la #de la pantalla 2. SCR1_OFFSET="60" ### Variables que tal vez haya que modificar ### # El añadido al alto real VIRTUAL_EXPANSION="100" #Tamaño real de las pantallas SCR1_WIDTH="1920" SCR1_HEIGHT="1080" # La pantalla es 1440x900 pero al tener diferente # dpi hago un ajuste en el tamaño de la imagen SCR2_WIDTH="1646" SCR2_HEIGHT="1029" #SCR2_WIDTH="1440" #SCR2_HEIGHT="900" ## A partir de aquí ya no hay que modificar nada ## ################################################### #Tamaño virtual de las pantallas #Asumo que la pantalla 1 siempre es mayor que la 2 let "VIRTUAL_HEIGHT=$SCR1_HEIGHT+$VIRTUAL_EXPANSION" TEMP_FILE1A="/tmp/1920x1080_tmpa.tiff" TEMP_FILE2A="/tmp/1440x900_tmpa.tiff" TEMP_FILE1B="/tmp/1920x1080_tmpb.tiff" TEMP_FILE2B="/tmp/1440x900_tmpb.tiff" #TEMP_FILE1C no es necesario TEMP_FILE2C="/tmp/1440x900_tmpc.tiff" FINAL_FILE1="/tmp/1920x1080.jpg" FINAL_FILE2="/tmp/1440x900.jpg" #Calcular tamaño total del escritori let "VIRTUAL_WIDTH=$SCR1_WIDTH+$SCR2_WIDTH" echo -e "Obteniendo el tamaño de la imagen..." # Averiguar tamaño de la imagen IMG_WIDTH=`identify $FILENAME | cut -d ' ' -f3 | cut -d 'x' -f1` IMG_HEIGHT=`identify $FILENAME | cut -d ' ' -f3 | cut -d 'x' -f2` # Calcular proporcion del escritorio respecto de la imagen # Usando bc para obtener un resultado con decimales PROPORTION=`bc <<< "scale=10; $IMG_WIDTH/$VIRTUAL_WIDTH"` #Calculo del tamaño de los recortes teniendo en cuenta la proporción #El resultado es un entero por la extraña operación añadida W1_WIDTH=`bc <<< "($SCR1_WIDTH*$PROPORTION+0.5)/1"` W2_WIDTH=`bc <<< "($SCR2_WIDTH*$PROPORTION+0.5)/1"` W1_HEIGHT=`bc <<< "($VIRTUAL_HEIGHT*$PROPORTION+0.5)/1"` echo -e "Preparando imágenes..." #cortar imagenes convert ${FILENAME} -crop ${W1_WIDTH}x${W1_HEIGHT}+0+${IMG1_OFFSET} ${TEMP_FILE1A} convert ${FILENAME} -crop ${W2_WIDTH}x${W1_HEIGHT}+${W1_WIDTH}+${IMG2_OFFSET} ${TEMP_FILE2A} echo -e "Redimensionando imágenes..." #redimensionar convert ${TEMP_FILE1A} -resize ${SCR1_WIDTH}x${VIRTUAL_HEIGHT} ${TEMP_FILE1B} convert ${TEMP_FILE2A} -resize ${SCR2_WIDTH}x${VIRTUAL_HEIGHT} ${TEMP_FILE2B} echo -e "Guardando imágenes..." #Recorte final let "SCR1_SOBRANTE=${VIRTUAL_EXPANSION}-${SCR1_OFFSET}" convert ${TEMP_FILE1B} -crop ${SCR1_WIDTH}x${SCR1_HEIGHT}+0+${SCR1_SOBRANTE} $FINAL_FILE1 let "SCR2_SOBRANTE=$VIRTUAL_HEIGHT-$SCR2_HEIGHT" convert ${TEMP_FILE2B} +repage -crop ${SCR2_WIDTH}x${SCR2_HEIGHT}+0+${SCR2_SOBRANTE} ${TEMP_FILE2C} #redimensionado final en la segunda pantalla convert ${TEMP_FILE2C} -resize 1440x900\! ${FINAL_FILE2} echo -e "\nSumario:" echo -e "DATOS DE LA IMAGEN" echo -e "El ancho es $IMG_WIDTH" echo -e "El alto es $IMG_HEIGHT" echo echo -e "DATOS DEL ESCRITORIO" echo -e "Ancho total: $VIRTUAL_WIDTH" echo -e "Proporción entre la imagen y el escritorio: $PROPORTION" echo echo -e "Terminado."
Etiquetas:
bash,
imagemagick,
wallpaper
viernes, mayo 02, 2014
Conexión del arduino mini pro al conversor UART TTL cp2102 de 6 pins
El CP2102 incluye el pin DTR que resetea automáticamente el arduino cuando se lo programa.
Arduino CP2102
GND ------- GND
VCC ------- +5V
RXI ------- TXD
TXD ------- RXD
GRN ------- DTR
Tutorial para usar el conversor de 5 pins
Suscribirse a:
Entradas (Atom)