Archivo de la categoría: Código Fuente

Cómo crear paquetes de pegatinas personalizadas (joder el español, en inglés Custom Sticker Set) para Telegram


Bueno como dice el título voy a enseñar como crear paquetes (sets) de stickers para Telegram

Telegram Messenger

Telegram Messenger

Para ello empecemos explicando lo que es un sticker

¿Que és un sticker?

Un sticker según la página oficial es una imagen de 512×512 pixeles, con fondo transparente y en formato Webp desarrollado por Google con una mayor compresión que el JPEG. Un formato que dará mucho de que hablar en los próximos años, cuando las cámaras no hagan conversión de Raw a JPEG sino a Webp. Bueno les dejo la galería, que por los momentos se muestran con pocos navegadores, excepto el de la casa, Google Chrome cesar_yes Sigue leyendo

Traductor de archivo de texto para OpenSudoku


Muchos Sudokus que existen por internet se exportan en formato de texto, compuesto por 81 caracteres numéricos o alfanuméricos, que representan las casillas iniciales del juego, pero que son inútiles para jugar en la app

Open Sudoku para Android de Roman Mašek se encuentra en Github

El código de este traductor se encuentra en mi repositorio

opensudoku.cmd

Ejemplo de ejecución

$ txt2opensudoku.py --input=./probe/easy50.txt --output=./probe/easy50.txt.opensudoku --level=easy

opensudoku.input

opensudoku.output

Existe uno generado a diario en Sudocue

Respaldando los mensajes en Android


Después de decidir entre las diferentes aplicaciones que existen, me decidí por una que respalda los datos en un formato reutilizable, como es el XML.

Con reutilizable me refiero a que puedo manipular y/o usar con otra aplicación, o crear una aplicación con base en ella.

Pero tenía un problema para leerlo en la PC, que es que solo los pone ordenados por fecha, pero me interesaba que se agruparan por conversación. Para ello he editado el archivo original XSL para que los SMS sean más leíbles de este modo.

Mi contribución: SMS_Backup__Restore_celisflen-bers.zip

SMS B&R Ordenados

SMS B&R Ordenados

SMS B&R Tabla interna

SMS B&R Tabla interna

SMS B&R Insertar filas

SMS B&R Insertar filas

SMS Backup & Restore

Autor: Ritesh Sahu

Página de la aplicación Aquí, también tiene versión PRO y un Add-on que permite respaldar en Google Drive

En Play Store

SMSBackupRestore, Version PRO y Add-on

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

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