Script pentru redimensionarea imaginilor

De când am început să scriu zilnic pe blog, am avut nevoie de redimensionarea imaginilor prea mari, astfel încât să nu depășească 1280px lățime. Prin urmare, am făcut ce face tot omul normal: resize în Photoshop. În a treia zi mi-am dat seama că nu-i o idee prea bună și că trebuie să elimin toți pașii inutili (deschis PS » deschis imaginea în PS » redimensionare » salvare pentru web » adăugarea unui prefix la numele fișierului).

Prin urmare, am instalat ImageMagick. Împreună cu un batch file (resize.bat) simplu, puteam face resize din CMD:

convert %1 -resize 1280 resized-%1

Doar că și asta presupunea prea mulți pași: trebuia să deschid o consolă și să scriu resize nume-poza.jpg.

Prin urmare, am făcut un script Python simplu care face resize la pozele selectate. Pentru asta e nevoie de instalarea a câtorva unelte suplimentare:

  • ImageMagick – la instalare trebuie să se bifeze Install development headers and libraries for C and C++;
  • Python 2.x – eu am 2.7.6, dar cred că funcționează orice este sub 3; nu uita ca la instalare să bifezi adăugarea python.exe la PATH!
  • Wand – un wrapper Python pentru ImageMagick;
  • StExBar – O unealtă ce adaugă diverse icons în Windows Explorer.

Wand

Varianta de instalare ce mi-a funcționat mie a fost cea explicată aici: python setup.py install în directorul în care am clonat repository-ul. Pip nu mi-a funcționat niciodată.

De asemenea, nu uita să setezi și variabila MAGICK_HOME (directorul unde ai instalat ImageMagic). Posibil să fie nevoie de un restart după asta.

Script-ul

import sys, os
import imghdr

from wand.image import Image

maxWidth = 1280
prefix = 'resized-'

args = sys.argv[1:]

def main():
  validImages = [ 'jpg', 'jpeg', 'png' ]
  for image in args:
    filename = os.path.basename( image )

    if( imghdr.what( filename ) in validImages ):
      i = Image( filename=filename )
      with i.clone() as resize:
        resize.transform( resize=str( maxWidth ) + 'x' )
        resize.save( filename=prefix + filename )
        resize.size

if __name__ == '__main__':
  main()

StExBar

Este nevoie să adaugi o comandă custom:

# command line
python C:\tools\resize.py %selpaths

Cam asta e tot

Ce-i drept, sunt foarte mulți pași inițiali, dar odată setat, toată mașinăria va funcționa fără probleme :)

4 Comentarii to “Script pentru redimensionarea imaginilor”

  1. Ionuț Staicu

    @Valeriu: aparent îmi place să aleg mereu calea mai grea :D

    Mulțumesc de plugin, pare foarte util; cu siguranță îl voi folosi în viitor.

  2. Daca vorbesti de .bat atunci rezulta Windows. IrfanView se putea ocupa de resize cu mai putine dureri de cap.

    Dar daca as vrea neaparat Python… m-as gandi in primul rand la PIL :)

  3. Ionuț Staicu

    @Wideshot: am aflat și eu că Irfan poate face asta. După ce am scris articolul.

    Adevărul este că tot scriptul ăsta este extras dintr-un script un pic mai mare care face resize la imagini și filme și le copiază în mai multe locuri pe disc (pentru sincronizare cu Dropbox, BTSync și OneDrive; da, toate trei, nu întreba de ce :D)

    Cât despre Python: fac mici exerciții în diverse limbaje (ce nu le folosesc altfel decât ocazional). Acum s-a potrivit să fie Python, dar putea la fel de bine să fie Ruby sau Java :)

Show trackbacks

Ți-a plăcut articolul? Lasă un comentariu!

You can insert code snippets using BBcode:
[js].[/js] [html].[/html] [php].[/php] [css].[/css]
You can also use some HTML tags:
<blockquote>.</blockquote> <code>.</code> <a href="">.</a> <strong>.</strong> <em>.</em>

windows apple dropbox facebook twitter