Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Python] Ridimensionare immagini

    ciao!

    vorrei ridimensionare le immagini usando python 3.
    ho fatto qualche ricerca sul web, ma sinceramente non ho capito quale libreria dovrei usare.
    perchè ad esempio parlano di PIL/Pillow.
    ma se faccio una ricerca tramite pip, ottengo una pletora di risultati:
    • Pillow-PIL (0.1dev)
    • PIL
    • pil-or-pillow
    • pilwrapper


    oppure parlano di Image, ma anche qua non si capisce se fa parte di uno dei moduli sopra, o è una classe a parte (e in caso come installarla).
    e i tutorial non indicano cosa installare di preciso.

    qualcuno sa darmi qualche delucidazione??

  2. #2
    ok, ne sono venuto a capo:
    codice:
    $ sudo pip install pillow
    questo un esempio di codice funzionante:
    codice:
    from PIL import Image
    
    im = Image.open("/home/matte/Desktop/IMG.png")
    imr = im.resize((100, 100))
    imr.save("/home/matte/Desktop/IMG_R", "png")
    ora sto cercando il modo di ridimensionare in maniera proporzionale.
    nel senso che data, una determinata larghezza, ridimensiona l'altezza in maniera proporzionale.
    sapete se è possibile con questa libreria?

  3. #3
    allora, questo codice funziona:
    codice:
    from PIL import Image, ImageOps
    
    try:
        size = (1900, 800)
        im = Image.open("/home/matte/Desktop/IMG.png")
        im.thumbnail(size, Image.ANTIALIAS)
        im.save("/home/matte/Desktop/IMG_R.png", "PNG")
    except:
        print("Impossibile modificare l'immagine!")
    la funzione thumbnail ridimensiona tenendo l'aspect ratio.
    ha solo un problema rispetto alle mie esigenze: funziona al "contrario"!
    nel senso che la funzione ridimensiona partendo dal valore più piccolo dei due.

    solo che io, ad esempio, gli passo solo l'altezza (800) e non gli passo la larghezza.
    al momento dovrei passarli una larghezza fittizia per fargli capire di prendere in considerazione l'altezza (801).

  4. #4
    uhm, c'è qualcosa che mi sfugge:
    codice:
    import glob, os
    from PIL import Image
    
    class ResizeImage:
        def resize(self, dir, w, h):
            if w > h:
                h = w + 1
    elif h > w:
                w = h + 1
    size = (w, h)
            print(size)
            for infile in glob.glob(dir + "*.jpg"):
                try:
                    print(infile)
                    file, ext = os.path.splitext(infile)
                    im = Image.open(infile)
                    im.thumbnail(size, Image.ANTIALIAS)
                    im.save(file + "_R.jpg", "JPEG")
                except IOError:
                    print("Impossibile modificare l'immagine '%s' " % infile)
    in entrambi i casi ridimensiona partendo dall'altezza.
    mentre io vorrei in qualche maniera decidere per cosa ridimensionare.
    qualcuno ha qualche consiglio?

  5. #5
    ok penso di aver capito come funziona.
    in automatico controlla se W > H o H > W.
    in base a questo, ridimensiona partendo dal più grande.

    quindi se W > H, ridimensiona partendo dalla larghezza, e proporziona l'altezza.
    se H > W fa l'operazione opposta.

    ho fatto diverse prove, e il comportamento è risultato sempre quello.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.