PNG Ridimensionamento e salvataggio in batch preservando la trasparenza


10

Ho circa 700+ immagini png. Devo ridimensionare e salvarli. Tuttavia, ho anche bisogno che la loro trasparenza sia intatta.

Ho provato Irfanview, ma non ha funzionato. GIMP funziona, ma non riesco a trovare un'opzione di salvataggio in batch. Non ho intenzione di ridimensionare manualmente e salvare oltre 700 immagini. È troppo noioso.

Esistono applicazioni là fuori che svolgono il lavoro di cui ho bisogno?


Hai provato ImageMagick?
slhck

No, ma non è quello per i server?
Grumpy ol 'Bear,

1
Cosa intendi per server? È un software da riga di comando che può essere eseguito su qualsiasi sistema operativo.
slhck

Sì, no La riga di comando non è la mia forza. Ho bisogno di qualcosa con una comoda interfaccia grafica.
Grumpy ol 'Bear

@DonSalva puoi farlo entro 2 righe di cmd usando ffmpeg, anche senza forza
Jet

Risposte:


10

Spiacenti, dovrai utilizzare la riga di comando. Dubito davvero che tu possa trovare un programma GUI per affrontare questo.

Non hai specificato quale sistema operativo stai utilizzando. Su Linux, il comando seguente ridimensionerà tutti i file .png nella directory corrente. Si noti che sovrascriverà le immagini originali:

##  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

Si noti che, per la riga di Windows, se lo si utilizza in uno script anziché nella riga di comando, è necessario utilizzare %%ianziché %i.


Un'altra opzione sarebbe lo scripting GIMP . Questo script ridimensionerà la tua immagine ( fonte ):

(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)))))

Salvalo come batch_resize.scmnella scriptsdirectory di GIMP , quindi eseguilo come segue:

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

AGGIORNARE:

Mi sono appena imbattuto in questo post che suggerisce che il plug-in GIMP David's Batch Processor dovrebbe fare esattamente quello che vuoi. L'articolo parla di Linux ma esiste un collegamento a una versione di Windows nella pagina del plugin.


Mio male, ho sempre dimenticato il sistema operativo. È Win7 64 bit.
Orso scontroso del

Bene, ImageMagick ha una versione di Windows e dovresti (in qualche modo) essere in grado di usare lo script GIMP anche in Windows.
terdon,

@DonSalva vedi risposta aggiornata.
terdon,

ImageMagick è uno strumento eccezionale per questo tipo di lavoro. Scopri come usarlo e lo adorerai per sempre!
Lee Harrison,

Tutto grazie a @evilsoup per l'aggiunta della riga di comando di Windows.
terdon,

4

Penso che lo strumento ImBatch possa aiutarti con il tuo compito. Funziona bene con Win7 x64 per me. È gratis.


Ottimo strumento, molto più flessibile di IrfanView e supporta png con alfa - grazie!
Tomáš Kafka,

3

XNConvert ha una GUI semplice e intuitiva per tali compiti.

XnConvert è un potente e gratuito processore di immagini batch multipiattaforma, che consente di combinare oltre 80 azioni. Compatibile con 500 formati. Utilizza il modulo di elaborazione batch di XnViewMP

  • elaborazione in lotti
  • preserva la trasparenza (testato con un PNG trasparente )
  • ridimensionamento automatico o predefinito
  • nessuna installazione necessaria

inserisci qui la descrizione dell'immagine


Ho provato questo e non ha mantenuto la trasparenza (versione per Mac). Fa che tipo di ricampionamento viene utilizzato (ho usato Lanczos come hai fatto tu).
Niico,

L'ho risolto da solo - usando Bilinear Resampling lo fa. Puoi vedere nella finestra "Dopo" come apparirà - se l'area trasparente è nera sai che non funzionerà.
Niico,

@niico Ora ho provato 3 diversi metodi di ricampionamento, anche Lanczos. Tutti producono immagini trasparenti. Forse la versione MAC funziona in modo diverso
nixda,

Ho provato questo su PC e Mac - identico su entrambi. Inoltre - ora noto che il ricampionamento che ho fatto è tremendo e inutilizzabile.
Niico,

2

Per impostazione predefinita, utilizzare FFMpeg è il modo più breve :)
Scaricalo qui , mettilo nella cartella con i tuoi file, apri la riga di comando, vai alla tua cartella (con cd) e scrivi lì:

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

e cambia 32x32con la tua taglia. Ridimensionerà i tuoi PNG e li metterà nella Resizedcartella.
Questo farà il lavoro senza file batch. Tuttavia, se vuoi metterlo nel file bat, scrivi %%al posto di %.

Spero che ti possa aiutare.


0

Non ho provato ImBatch o XNConvert, che altri hanno menzionato qui, ma qui ci sono un paio di altri suggerimenti per te:

  • pngquant (uno strumento da riga di comando. Io stesso ho usato la GUG di Windows PNGoo inclusa nella pagina)
  • Quantizzatore del colore (molte possibilità di modificare le impostazioni per utilizzare vari algoritmi di dithering ecc. Non l'ho mai fatto funzionare bene come PNGoo / pngquant, ma ciò potrebbe essere dovuto alla mia conoscenza limitata).
  • TinyPNG.com (il servizio web gratuito ha un limite di 20 file, ciascuno inferiore a 5 MB)

0

Ho avuto questo stesso problema molte volte e ho installato Photoshop per la maggior parte di quelle volte. Quindi ho messo insieme questo script usando alcune ispirazioni del codice di altri.

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

uso

  • Installa Photoshop CC o versione più recente.
  • Apri lo script in Photoshop.
  • Una finestra di dialogo ti chiederà di scegliere una cartella di origine.
  • Una finestra di dialogo ti chiederà di scegliere una cartella di destinazione.
  • Un'altra finestra di dialogo ti chiederà la larghezza e l'altezza massime.
  • Un'altra finestra di dialogo ti chiederà la larghezza ideale, quindi l'altezza ideale.
  • Attendi che lo script aprirà tutti i file PSD o AI presenti nella cartella di origine e li salverà come PNG-24 trasparente.
  • Una finestra di dialogo ti farà sapere quando è fatto.

Riferimenti

C'erano più di 2 link a cui fare riferimento, la mia attuale reputazione non mi permette più di postare. Vedi lo script originale come i riferimenti sono documentati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.