Entradas

Mostrando las entradas de 2021

Convertir archivo PDF a PNG con ImageMagick y GhostScript

Convirtiendo PDF a PNG

En previos sistemas, siempre he tenido la necesidad de crear vistas en miniatura de archivos PDF, dado que casi todos los sistemas que he hecho, se requiere de exportar a PDF (y Excel). ImageMagick (https://imagemagick.org/script/download.php#windows) se ha convertido una de mis herramientas preferidas para la conversión y tratamiento de archivos de imagen; y precisamente tiene la opción de convertir (renderizar) archivos PDF a distintos formatos de imágen, gracias a GhostScript (https://www.ghostscript.com/download/gsdnld.html).

En mi caso personal, prefiero el formato PNG, dado que conserva la calidad máxima de archivo con un tamaño relativamente pequeño.

Código

convert -density 150 -background white -alpha remove %1 "%~n1-%%d.pdf.png"

Partes relevantes

  • -density (Resolución) - Establecer la resolución del archivo de salida. El tamaño (en pixeles) varía dependiendo de la resolución del archivo PDF.
  • %1 - Archivo a convertir
  • -background white -alpha remove - Por defecto, los archivos PDF tienen un fondo transparente, lo intercambiamos por uno blanco
  • %~n1 - Nombre de archivo sin extensión
  • %%d - Número de Página (1-n), %% se usa para archivos .bat
Página del manual del set 6114493 de Lego

Fuentes

Aplicar máscara a imagen en canal alfa

Desde que empecé a usar Imagemagick, a principios de año, he dejado de escribir bastante código en C# en pequeños programas de aplicación muy específica; a cambio de escribir comandos muy específicos para situaciones específicas, como en éste caso en donde quiero aplicar el canal alfa a una imagen, basándome en la escala de grises de otra imagen (Blanco/255 = Opaco, Negro/0 = Transparente).

convert cube.bmp cube_mask.bmp -alpha Off -compose CopyOpacity -composite cube.png


 

 https://imagemagick.org/

Renombar archivos de manera secuencial [MS-DOS]

Tengo un montón de archivos mp4 que quiero renombrar de manera secuencial. Son capturas de gameplays de videojuegos de mi xbox, por lo cual ni el nombre de archivo ni la fecha (que se indica en el nombre de archivo) me importa, pero quiero llevar un control de cada archivo; y es más fácil buscar un archivo '00001.mp4' en lugar de 'Minecraft 2020-06-10 23-18-05.mp4'.

El script se divide en dos partes principales: 

  • El contador - hace un bucle por cada archivo especificado por el comando dir y aumenta el valor de la variable _seq en uno (que se inicializa en cero; enableextensions y enabledelayedexpansion permiten que se pueda consultar el valor actual la variable _seq adentro del bucle, en lugar del final) y llama la subrutina :sub enviando el valor del contador junto con el nombre del archivo para renombrarlo.
  • Subrutina :sub- se encarga de darle formato al contador (convirtiendo '1' en '00001') y hace el renombramiento.

El script se puede cambiar el tipo de archivo a renombrar editando el patrón de busqueda del comando dir.

@ECHO OFF
@SETLOCAL enableextensions enabledelayedexpansion
::Activa el uso UTF-8 (Palabras con Acentos)
chcp 65001 

SET /a _seq = 0

for /f "tokens=*" %%f in ('dir /b *.mp4') do (
	SET /a "_seq+=1"
	CALL :sub !_seq! "%%f"
)

exit /b

:sub
	SET "_TMP=00000%1"
	SET "_TMP=%_TMP:~-5%"
	REN %2 %_TMP%.mp4