Redimensionnement et enregistrement des lots PNG tout en préservant la transparence


10

J'ai environ 700+ images png. Je dois les redimensionner et les enregistrer. Mais j'ai aussi besoin que leur transparence soit intacte.

J'ai essayé Irfanview, mais cela n'a pas fonctionné. GIMP fonctionne, mais je ne trouve pas d'option d'enregistrement par lots. Je ne vais pas redimensionner manuellement et enregistrer plus de 700 images. C'est trop fastidieux.

Y a-t-il des applications qui font le travail dont j'ai besoin?


Avez-vous essayé ImageMagick?
slhck

Non, mais n'est-ce pas pour les serveurs?
Grumpy ol 'Bear

1
Que voulez-vous dire, pour les serveurs? Il s'agit d'un logiciel en ligne de commande qui peut être exécuté sur n'importe quel système d'exploitation.
slhck

Oui, non. La ligne de commande n'est pas ma force. J'ai besoin de quelque chose avec une interface graphique pratique.
Grumpy ol 'Bear

@DonSalva vous pouvez le faire dans les 2 lignes de cmd en utilisant ffmpeg, même sans force
Jet

Réponses:


10

Désolé, vous allez devoir utiliser la ligne de commande. Je doute vraiment que vous puissiez trouver un programme GUI pour y faire face.

Vous n'avez pas spécifié le système d'exploitation que vous utilisez. Sous Linux, la commande suivante redimensionnera tous les fichiers .png du répertoire actuel. Notez qu'il écrasera les images originales:

##  bash (Linux, OSX):
for i in *png; do convert "$i" -resize 32x32 "$i"; done
##  on Windows:
for %i in (*png); do convert %i -resize 32x32 %i; done

Notez que, pour la ligne Windows, si vous l'utilisez dans un script plutôt que sur la ligne de commande, vous devez utiliser %%iplutôt que %i.


Une autre option serait l' écriture de scripts GIMP . Ce script redimensionnera votre image ( source ):

(define (batch-resize pattern width height)
(let* ((filelist (cadr (file-glob pattern 1))))
(while (not (null? filelist))
(let* ((filename (car filelist))
(image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
(drawable (car (gimp-image-get-active-layer image))))
(gimp-image-scale-full image width height INTERPOLATION-CUBIC)
(gimp-file-save RUN-NONINTERACTIVE image drawable filename filename)
(gimp-image-delete image))
(set! filelist (cdr filelist)))))

Enregistrez-le comme batch_resize.scmdans le scriptsrépertoire de GIMP , puis exécutez-le comme suit:

gimp -i -b '(batch-resize "*.JPG" 604 453)' -b '(gimp-quit 0)'

METTRE À JOUR:

Je suis juste tombé sur ce post qui suggère que le plugin GIMP David's Batch Processor devrait faire exactement ce que vous voulez. L'article concerne Linux mais il y a un lien vers une version Windows sur la page du plugin.


Mon mauvais, j'ai toujours oublié le système d'exploitation. C'est Win7 64bit.
Grumpy ol 'Bear

Eh bien, ImageMagick a une version Windows et vous devriez (en quelque sorte) être en mesure d'utiliser le script GIMP dans Windows également.
terdon

@DonSalva voir la réponse mise à jour.
terdon

ImageMagick est un outil génial pour ce type de travail. Apprenez à l'utiliser et vous l'aimerez pour toujours!
Lee Harrison

Merci à @evilsoup d'avoir ajouté la ligne de commande Windows.
terdon

4

Je pense que l' outil ImBatch peut vous aider dans votre tâche. Fonctionne très bien avec Win7 x64 pour moi. Ce est gratuit.


Excellent outil, beaucoup plus flexible qu'IrfanView et supporte le png avec alpha - merci!
Tomáš Kafka

3

XNConvert dispose d'une interface graphique simple et intuitive pour ces tâches.

XnConvert est un processeur d'images par lots multiplateforme puissant et gratuit, vous permettant de combiner plus de 80 actions. Compatible avec 500 formats. Il utilise le module de traitement par lots de XnViewMP

  • le traitement par lots
  • préserve la transparence (testé avec un PNG transparent )
  • redimensionnement automatique ou prédéfini
  • aucune installation nécessaire

entrez la description de l'image ici


J'ai essayé cela et cela n'a pas maintenu la transparence (version Mac). Cela fait-il quel type de rééchantillonnage est utilisé (j'ai utilisé Lanczos comme vous).
niico

J'ai travaillé cela moi-même - le rééchantillonnage bilinéaire le fait. Vous pouvez voir dans la fenêtre «Après» à quoi cela va ressembler - si la zone transparente est noire, vous savez que cela ne fonctionnera pas.
niico

@niico J'ai maintenant essayé 3 méthodes de rééchantillonnage différentes, Lanczos aussi. Ils produisent tous des images transparentes. Peut-être que la version MAC fonctionne d'une manière différente
nixda

J'ai essayé cela sur PC et Mac - identique sur les deux. De plus - je remarque maintenant que le rééchantillonnage que j'ai fait est irrégulier et inutilisable.
niico

2

Par défaut, utiliser FFMpeg est le moyen le plus court :)
Téléchargez-le ici , mettez-le dans le dossier avec vos fichiers, ouvrez la ligne de commande, allez dans votre dossier (avec cd) et écrivez-y:

mkdir Resized
for %f in (*.png) do ffmpeg -i "%~nxf" -s 32x32 "Resized\%~nxf"

et changez 32x32avec votre taille. Il redimensionnera vos fichiers PNG et les mettra dans un Resizeddossier.
Cela fera le travail sans fichier de commandes. Cependant, si vous voulez mettre cela dans un fichier bat, écrivez %%à la place de %.

J'espère que cela vous aidera.


0

Je n'ai pas essayé ImBatch ou XNConvert, que d'autres ont mentionné ici, mais voici quelques suggestions supplémentaires pour vous:

  • pngquant (un outil en ligne de commande. Moi-même, j'ai utilisé l'interface graphique Windows PNGoo incluse sur la page)
  • Quantificateur de couleurs (beaucoup de possibilités pour modifier les paramètres pour utiliser divers algorithmes de tramage, etc. Je ne l'ai jamais fait fonctionner aussi bien que PNGoo / pngquant, mais cela pourrait être dû à mes connaissances limitées).
  • TinyPNG.com (le service Web gratuit a une limite de 20 fichiers, chacun inférieur à 5 Mo)

0

J'ai eu ce même problème plusieurs fois et j'ai installé Photoshop la plupart du temps. J'ai donc assemblé ce script en utilisant quelques inspirations du code des autres.

https://gist.github.com/pixelbacon/7754cba64125b0240504

Usage

  • Installez Photoshop CC ou une version plus récente.
  • Ouvrez le script dans Photoshop.
  • Une boîte de dialogue vous demandera de choisir un dossier source.
  • Une boîte de dialogue vous demandera de choisir un dossier de destination.
  • Une autre boîte de dialogue vous demandera la largeur et la hauteur maximales.
  • Une autre boîte de dialogue vous demandera la largeur idéale, puis la hauteur idéale.
  • Attendez que le script ouvre tous les fichiers PSD ou AI que vous avez dans votre dossier source et enregistrez-les au format PNG-24 transparent.
  • Une boîte de dialogue vous indiquera quand cela sera fait.

Références

Il y avait plus de 2 liens vers des références, ma réputation actuelle ne me permet plus de poster. Voir le script d'origine car les références sont documentées.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.