2013-04-23 1 views
4

J'essaye d'écrire un script dans GIMP qui va charger un fichier PNG et le sauvegarder à nouveau avec une compression maximale (je prévois aussi d'ajouter d'autres étapes de traitement). Toutefois, le script suivant, semble détruire de l'information alpha:Avec Script-Fu, charger et enregistrer un fichier PNG perd alpha

(define (process-png pattern) 
    (let* (
     (filelist (cadr (file-glob pattern 1))) 
    ) 
    (while (not (null? filelist)) 
     (begin 
     (catch() 
      (let* (
       (filename (car filelist)) 
       (image (car (file-png-load RUN-NONINTERACTIVE filename filename))) 
      ) 
      (begin 
       (file-png-save2 RUN-NONINTERACTIVE 
        image (car (gimp-image-get-active-drawable image)) 
        filename filename 
        0 9 0 0 0 0 0 0 0) 
       (gimp-image-delete image) 
      ) 
     ) 
     ) 
     (set! filelist (cdr filelist)) 
    ) 
    ) 
) 
) 

Par exemple, les pixels translucides en JQuery icons semblent tous devenir complètement transparent, ce qui rend tout aliasé.

Comment est-ce que ceci peut être fixé?

Répondre

2

La documentation de file-png-save2 indique que le dernier paramètre est pour Preserve color of transparent pixels? qui dans votre cas est défini sur 0. Essayez de définir cette valeur sur 1 et cela devrait fonctionner correctement.

+0

Les couleurs sont bien conservées, mais j'ai tout de même essayé, et elle perd toujours des informations alpha. Vous pouvez le voir en l'essayant avec le lien des icônes JQuery dans la description originale. Ouvrez les fichiers originaux et traités dans Gimp, réglez le zoom sur 800%, passez en mode RVB et ajoutez un calque d'arrière-plan rouge. Vous pourrez voir des pixels translucides dans l'un mais pas dans l'autre. – Olathe

Questions connexes