Artscript v1.6, speeds up and gains power

2013-04-12_v1.6
Standard

Después de una larga sesión de codificado les presento Artscript 1.6. En pocas palabras, es más rápido, más práctico y permite usar archivo de configuración
[ After a long coding session I preset you Artscript 1.6. In a few words, it's faster, more practical and alows you to load default configuration using a config file ]

In this version

  • Configuration File
  • Preset modes
  • Watermark Size & Position.
  • Collage label and range mode
  • Color settings settings
  • Output changes
  • SVG conversion
  • Gimp batch modeProgressbar
  • Massive speed improvements

2013-04-12_mainv.16

Download

This link list all available versions https://github.com/vanyossi/artscriptk/tags

New functions

Watermark Size & Position.

Ahora es posible cambiar el tamaño de la marca de agua. Además de tener poder cambiar la posición de la misma permite usarla como un título.
[ Now it is possible to change the size of the watermark between 10 and 48 points. This combined with the addition of watermark positioning allow us to use this function as a title.]

Collage label and range mode

EL campo “range” o rango, define un límite para la cantidad de imágenes dentro de un Collage, si son más imágenes que el rango se producirán nuevos Collage hasta terminar de procesar la lista de imágenes. Una selección de 40 archivos con un rango de 9 generará 5 Collage. Para controlar la disposición de las imágenes podemos usar la opción “Layout” con valores antes de la x para contorlar columnas (ej, 2x) o después para controlar filas (x2).
[ The new range entry field sets a limit for the images inside a collage, if you have more images it will produce more collages to accommodate the remaining images. A selection of 40 images with a range of 9 will produce a 5 collages. To control the image Layout, use the field with that name to set a column(2x) or row(x2) layout. ]

Etiquetar en posible al llenar el campo “Label”. Este campo puede estampar datos de forma dinámica usando las secuencias de escape ImageMagick. Puedes revisarlos usando el siguiente enlace http://www.imagemagick.org/script/escape.php
[ Labeling it's now possible by setting something inside the label entry. This entry can be made dynamic using Imagemagick escape sequences . You can check them here http://www.imagemagick.org/script/escape.php ]

Name: %f          #will produce a pattern like ( Name: file_name.jpg )

Color settings settings

La nueva columna de selección de colores permite seleccionar colores para el fondo, la marca de agua, el borde de imagen en collage y el color de la etiqueta.
[ The new column shows a variety of color settings to change the look of watermark, background color, border color (Collage) and Label color (Collage) ]

Output changes

Ahora es posible usar el script para convertir archivos KRA u ORA conservando sus capas, siempre que la fuente las tenga. al hacer esta operación no se aplicarán marcas de agua ni cambios de tamaño, esto es a propósito dado que esta función la pensé para facilitar la migración de archivos PSD o XCF a la plataforma ORA.
[ It is now possible to use the script to produce .KRA or .ORA files with layers if source files are PSD, XCF, ORA or KRA.  When doing this operation no watermark or resize is applyed, this is intended as this function is intended to migrate any old PSD XCF file to a new workflow with ORA or KRA. ]

SVG conversion

Usamos Inkscape para convertir todos los SVG en PNG antes de cualquier transformación. Hay que notar que siempre se usará el valor dentro del campo de tamaños aunque la casilla de reescalado no esté seleccionada. Por lo que si queremos obtener el tamaño real del archivo SVG debemos poner “100%” en dicha casilla. En el pasado Imagemagick se encargaba de los archivos SVG en caso de no encontrar Inkcape instalado, sin embargo esta función ha cambiado a no siempre usar Inkscape.
[ Inkscape is used for conversion of SVG into PNG. Before doing this it uses the size field information as the output size even if the check box is not selected. Because of that you need to set the size value to "100%" to get the SVG real size.. In the past when inkscape was not present imagemagick would perform the convert, but now this is not configured by default. ]

Gimp batch mode

Fue necesario implementar Gimp en línea de comandos para convertir PSD o XCF de capas a formatos sin capas. Antes usábamos calligraconvert para relizar estas conversiones. Sin embargo muchos archivos PSD desde Photoshop no eran  interpretados correctamente. En el caso de los XCF todos los efectos de capas y transparencias se perdían usando Calligraconverter.
[ Using gimp for convert from PSD or XCF to flat images was necessary to keep transparencies and effects. Before we used calligra for this, but a lot of PSD from photoshop didn't render as expected. (not even close in some files) ]

Progressbar

(Esta función está en pruebas) Añadí una barra de progreso para informar al usuario sobre el estado de la operación. Esta función aún no está programada si seleccionamos formato de salida ORA o KRA.
[ This is a testing feature. Added a progress bar to inform the user on the current step in the process. There progress bar is not functional when outputting KRA or ORA at the moment ]

Configuration file and presets

The most notable change is the addition of a configuration and presets file. It is very easy to configure and use. Place the copy presets.config.example to presets.config and uncomment the values you intend to set as default.

#-====Size and Montage:
# Sizes available in size listbox, Space separated values [listbox]
# sizes=1920x1080 1280x1280 40% 10% 450x400 364x250  ::Change this
sizes=1920x1080 1280x1280 40% 10% 450x400 364x250    :: To this. Adjust values as needed

Presets

Use the same file to add a preset. All you need to do is declare a pair valur like this

#Declaring a new preset, all values below will be loaded on that preset only
preset=strip

All values declared below the preset name line will be loaded when calling the script like this.

#For loading preset "strip" in terminal
$sh ~ artscript.tcl :preset strip *.png

Below its an example of the strip preset completed, only declared values will be overridden

#Declaring a new preset, all values below will be loaded on that preset only
preset=strip
#Changing watermarksize to 20
wmsize=20
#Setting watermark position to Top Center
wmpos=North
#Default resize option
sizext=500x450
#Collage mode active
tilesel=true
#Collage layout to 1 column
tileval=1x
#Collage labeling %f prints file name
mlabel=%f
#background color is set to darkgray "#444"
bgcolor=#444
#Label color set to lighter gray "#aaa"
tfill=#aaa
#No border on each image
mborder=0
#Set space between images to 8
mspace=8

Using the same procedure to add a context menu item just add a second Artscript menu item with a different preset load option “:preset nameOfPreset” to precompose some options. https://github.com/vanyossi/artscriptk

Speed improvements

En el pasado Artscript usaba “identify”, un comando de imagemagick, para validar los datos de entrada. Usába identify antes de usar cada imagen del collage y usaba identify antes de usar convert por cada imagen de la lista. Esto generaba muchísima perdida de tiempo ya que identify no es instantaneo, su velocidad depende mucho del tamaño de la imagen a analizar. En algunos casos debía esperar 5minutos antes de que abriera la interfaz del script.
[ In the past Artscript used "identify" of imagemagick comands to validate input data, we used identify before each collage and before each convert operation. This produced a lot of speed drag because identify is not instant, it depends on file size and on huge images this meant there was a wait of 5minutes before seeing the GUI.]

El nuevo Artscript hace la primera validación usando la extensión del archivo, lo que hace que la interfaz se muestre casi de manera instantánea. Después de eso valido todas las imágenes antes de mandarlas a convert con la intención no sólo de depurar la lista sino de obtener datos como las dimensiones y el formato. En total sólo llamamos al programa una vez. También cambié todas las funciones de búsqueda y reemplazo o borrado por funciones más simples de concatenado y creado de listas. No sólo es mucho más rápido sino que es mucho más simple de modificar. Los cambios no parecerán mucho en pequeños lotes y pequeñas imágenes, pero al trabajar en lotes grandes e imágenes pesadas artscript cuadriplicó la velocidad.
[ The new Artscript does the first validation using file name extension, this makes the startup time almost instant. After that all images are validated before sending to Imagemagick functions. We also removed a lot of identify calls and reduced it to only one. We changed all search and replace list element for simple add new list and overwrite. This changes may not seem like much on small batches and small files, but on big batchs (1.5k) and large images (5k pixels) allow the application to quadruple the speed. ]

No tengo tablas comparativas pero la ganancia de velocidad es notable. Especialmente en el modo Collage que fue recodificado por completo, evitando cargar las imágenes en RAM usando el tamaño completo y en lugar de eso decirle a “montage” que cambiara el tamaño antes de cagarlas en memoria. Esto generó la ganancia más grande puesto que en lugar de depender de la memoria (que usa bastante) dependemos totalmente en el CPU para ganar velocidad. En mi máquina de 9min bajó a 1min el proceso de Collage de 15 imágenes de 5k x 4k con un peso combinado de 300MB. La ganancia se debe principalmente a que no usamos espacio de swap y permitimos el flujo constante de datos del disco, al CPU y finalmente a la RAM.
[ I didn't make a comparative chart but on big fiels and big batches speed increase is notable. Specially Collage has been overhauled to avoid loading to RAM input images at full size. Before making a Collage of 15 images (5k x 4x) with a total weight of 300MB, taken over 9minutes. This new version down scales images before loading to memory so the operation took around 1 min in total. Im sure it will be faster on newer PC, as the CPU is the most used on this operation. ]

Overall changes

Desde la versión 1.0 a la versión 1.6 sehizo mucha limpiza de código. Mientras más aprendo de Tk TCL  más me gusto, pero también me doy cuenta de las malas desiciones de programación de antes. Mucho de lo que estoy removiendo son llamadas a funciones globales. También estamos dividiendo el código en funciones más pequeñas y reutilizables.
[ From 1.0 to 1.6 there was a lot of code clean up. The more I learn about TK TCL the more I like it and the more I notice I have a lot of bad practices. This time I removed a lot of global calls, and reduces the string search and replace in favor of list concatenation and simple string comparisons. A lot of processes where devoted to their own function. ]

Changelog

Ver: 1.6

ADD: Progressbar. Users needs some input after pressing convert.

FIX: output ora and kra now preserve layers from xcf,psd,kra and ora
FIX: Gimp file converter using gimp, functional to flatten xcf,psd

GUI: tweaks to shrink size. removed obsolete buttons.

Ver 1.5

ADD: Color setting column to select watermark, background, border and label color.
ADD: Collage range mode
ADD: Collage label option
ADD: presets.config
ADD: preset function to load user different defaults

FIX: parsing of list with spaces
FIX: always adding suffix for svg and calligra files
FIX: Name with spaces or special characters wont work.

General code clean up
CODE: Performance enhancements, specially Collagemode
CODE:Validation functions improvement
CODE:Reduced identify calls to only one to validate and get data from images
CODE:Collage wxh now uses data from dict
CODE:Moved Calligra, inkscape and collage to their own fuctions
CODE:Old sizeval validation removed from convert process
CODE:getSizeSel return size from user to be used on converters
CODE:Add filerename function to reduce repetition
CODE: rewrite rename function shorter and simpler

Convert: Removed unnecesary identify check for source Colorspace
Convert: added interpolation mode to get better quality resizes

GUI:Minor color adjusments to quickly create dark collage.
GUI: Moved watermark options to Color settings area

More info

About these ads

One thought on “Artscript v1.6, speeds up and gains power

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s