Archivo de la categoría: Bash

Como recuperar descargas fallidas de Firefox en Linux


Cuantas veces hemos estado esperando una descarga y cuando pasa tiempo la descarga se detiene y mucho peor su firma HASH como MD5 o SHA no coincide.

Para eso usaremos wget, un programa que podemos usar desde la consola.

  1. Le damos clic derecho a la descarga y seleccionamos copiar dirección de descarga.
  2. Vamos a la consola y cambiamos al directorio donde están los temporales
  3. Colocamos wget -c presionamos (Ctrl+May+V) y se pega http://direccion_de_descarga … Quedaría algo como wget -c http://direccion_de_descarga (Enter) Listo
Anuncios

Convertir una imagen Carátula DVD en una proyección


Como convertir una carátula de DVD (o cualquier tipo) en una representación de la caja

Usando la imagen
http://img513.imageshack.us/img513/3228/imgrf9.jpg

Usaremos el siguiente script:

#!/bin/bash

wget http://img513.imageshack.us/img513/3228/imgrf9.jpg; img=”imgrf9.jpg”
#img=$1;

identify -format “%w\x%h” $img
# dimensiones de imagen imgrf9.jpg = 3213 px x 2125 px
# ancho de spine = 213
# ancho de caratulas 3213 – 213 = 3000; 3000 / 2 = 1500 px

# Back 1500 + Spine 213 + Front 1500 = 3213 px

# Cortamos front + spine = 1500 + 213 = 1713
convert “$img” -gravity East -chop 1713x back.jpg
echo “Creado back.jpg”

# Cortamos front y back = 1500 y 1500 por ambos lados
convert “$img” -gravity East -chop 1500x -gravity West -chop 1500×0 spine.jpg
echo “Creado spine.jpg”

# Cortamos back + spine = 1500 + 213 = 1713
convert “$img” -gravity West -chop 1713×0 front.jpg
echo “Creado front.jpg”

# Transformar
# Puntos de perspectiva
# 1——2
# 3——4
# back 1500×2125
convert back.jpg -matte -virtual-pixel transparent \
-distort Perspective ‘0,0 173,76 1500,0 1500,62 0,2125 173,1971 1500,2125 1500,1957’ back_cover.png
echo “Creado back_cover.jpg”

# spine 213×2125
convert spine.jpg -matte -virtual-pixel transparent \
-distort Perspective ‘0,0 0,62 213,0 143,76 0,2125 0,1957 213,2125 143,2013’ spine_cover.png
echo “Creado spine_cover.jpg”

# front 1500×2125
convert front.jpg -matte -virtual-pixel transparent \
-distort Perspective ‘0,0 0,76 1500,0 1200,47 0,2125 0,2013 1500,2125 1200,1910’ front_cover.png
echo “Creado front_cover.jpg”

montage -geometry +0+0 back_cover.png \
\( spine_cover.png -crop 0x0-70+0 \) \
front_cover.png -background none caratula.png
# caratula.png 3143×2125

convert -size 16×16 -font CourierNew -pointsize 18 xc:none -annotate +3+12 ‘©’ -flop cl.png

convert -size 150×16 -font CourierNew -pointsize 18 xc:none -annotate +3+12 ‘Carlos Celis’ cc.png

montage -geometry +0+0 -background none cl.png cc.png carloscelis.png

ancho=`identify -format “%w” caratula.png`
anchowm=`expr $ancho / 3`; #echo $anchowm

composite \( carloscelis.png -geometry $anchowm -gravity southeast -dissolve 40% \) caratula.png caratula-cpleft.png

#convert -trim img.png caratula.png
echo “Montaje hecho”

También he creado este:

#!/bin/bash

# Use $0 imagen anchospine

img=$1;
wspine=$2;

echo -n 'Imagen: '$img' dimensiones: '; identify -format "%w\x%h" $img
echo 'Ancho de la Espina: '$wspine

anchoimg=`identify -format "%w" $img`
altoimg=`identify -format "%h" $img`
backfront=`expr \( $anchoimg - $wspine \) / 2`

# Cortamos front + spine
corte=`expr $backfront + $wspine`
convert "$img" -gravity East -chop $corte\x back.jpg
echo "Creado back.jpg"

# Cortamos front y back por ambos lados
convert "$img" -gravity East -chop $backfront\x -gravity West -chop $backfront\x spine.jpg
echo "Creado spine.jpg"

# Cortamos back + spine
convert "$img" -gravity West -chop $corte\x0 front.jpg
echo "Creado front.jpg"

# Transformar
# Puntos de perspectiva
# 1------2
# 3------4

# back
margensup=100;
margenizq=100;
perspectivaback=100;
factor=`expr $altoimg / $perspectivaback`;
perspY=30;
margeninf=100;

p1b='0,0';
p1bt=$margenizq','`expr $margensup + $factor + $perspY`
p2b=$backfront',0'
p2bt=$backfront','`expr $margensup + $factor`
p3b='0,'$altoimg
p3bt=$margenizq','`expr $altoimg - $factor - $margeninf - $perspY`
p4b=$backfront','$altoimg
p4bt=$backfront','`expr $altoimg - $factor - $margeninf`

#echo \'$p1b $p1bt $p2b $p2bt $p3b $p3bt $p4b $p4bt\'
eval convert back.jpg -matte -virtual-pixel transparent \
-distort Perspective \'$p1b $p1bt $p2b $p2bt $p3b $p3bt $p4b $p4bt\' back_cover.png
echo "Creado back_cover.jpg"

# spine 213x2125
pandeospine=35;
p1s='0,0';
p1st='0,'`expr $margensup + $factor`
p2s=$wspine',0'
p2st=`expr $wspine - $pandeospine`','`expr $margensup + $pandeospine`
p3s='0,'$altoimg
p3st='0,'`expr $altoimg - $factor - $margeninf`
p4s=$wspine','$altoimg
p4st=`expr $wspine - $pandeospine`','`expr $altoimg - $factor - $margeninf + $pandeospine`

#echo \'$p1s $p1st $p2s $p2st $p3s $p3st $p4s $p4st\'
eval convert spine.jpg -matte -virtual-pixel transparent \
-distort Perspective \'$p1s $p1st $p2s $p2st $p3s $p3st $p4s $p4st\' spine_cover.png
echo "Creado spine_cover.jpg"

# front 1500x2125
margenderecho=120;
perspY=30;
p1f='0,0';
p1ft='0,'`expr $margensup + $pandeospine`
p2f=$backfront',0'
p2ft=`expr $backfront - $margenderecho`','`expr $margensup + $pandeospine - $perspY`
p3f='0,'$altoimg
p3ft='0,'`expr $altoimg - $factor - $margeninf + $pandeospine`
p4f=$backfront','$altoimg
p4ft=`expr $backfront - $margenderecho`','`expr $altoimg - $factor - $margeninf - $perspY`

#echo \'$p1f $p1ft $p2f $p2ft $p3f $p3ft $p4f $p4ft\'
eval convert front.jpg -matte -virtual-pixel transparent \
-distort Perspective \'$p1f $p1ft $p2f $p2ft $p3f $p3ft $p4f $p4ft\' front_cover.png
echo "Creado front_cover.jpg"

# caratula.png
montage -geometry +0+0 back_cover.png \
\( spine_cover.png -crop 0x0-$pandeospine+0 \) \
front_cover.png -background none caratula.png

convert -size 16x16 -font CourierNew -pointsize 18 xc:none -annotate +3+12 '©' -flop cl.png

convert -size 150x16 -font CourierNew -pointsize 18 xc:none -annotate +3+12 'Carlos Celis' cc.png

montage -geometry +0+0 -background none cl.png cc.png carloscelis.png

ancho=`identify -format "%w" caratula.png`
anchowm=`expr $ancho / 3`; #echo $anchowm

composite \( carloscelis.png -geometry $anchowm -gravity southeast -dissolve 40% \) caratula.png caratula-cpleft.png

#convert -trim img.png caratula.png
echo "Montaje hecho"
display -resize 800 caratula.png
display -resize 800 caratula-cpleft.png

Si se guarda como “caratula.sh”, la llamada sería:
> bash caratula.sh imgrf9.jpg 213

O, si usas la imagen http://images2.coveralia.com/dvd/r/Ratatouille-Caratula.jpg

Derechos de Disney


> bash caratula.sh Ratatouille-Caratula.jpg 113

ImageMagick, que NO se puede hacer con las imágenes


Logo IM

ImageMagick

ImageMagick no es un programa visual, es un suite (conjunto de programas) para crear, editar y montar imágenes de mapa de bits (Gráfico Rasterizado) que se ejecuta por línea de comandos y el cuál podemos enlazar con nuestro lenguaje favorito.

Tiene varias interfaces para cada uno: G2F (Ada), MagickCore (C), MagickWand (C), ChMagick (Ch), ImageMagickObject (COM+), Magick++ (C++), JMagick (Java), L-Magick (Lisp), NMagick (Neko/haXe), MagickNet (.NET), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), IMagick (PHP), PythonMagick (Python), RMagick (Ruby), o TclMagick (Tcl/TK). También se puede usar en Windows

IM Ejemplos
Para empezar, puedes bajarte esto

  1. Imágenes
  2. Fotos

Abre una consola bash, dirigite a una carpeta con imágenes e introduce esto:
convert *.jpg mis\ imagenes.pdf
Con eso conseguiras un PDF con todas las imágenes JPG de esa carpeta

Un ejemplo avanzado de este programa, puedes verlo aquí

Para más info:  Mire todos los usos que tiene

Fotocomposición
Animación
Animación2
Esferificar
Y muchos más….
Y ahora un chiste:

Pasatiempos.... con ImageMagick
Si no lo entendiste o eres mujer (jeje), lee esto