2010-07-30 18 views
5

Sto scrivendo una semplice applicazione in Python che visualizza le immagini. Devo implementare Zoom avanti e Zoom indietro ridimensionando l'immagine.
penso che il metodo di Image.transform sarà in grado di fare questo, ma non sono sicuro come usarlo, dal momento che è per chiedere un matrice affine o qualcosa del genere: P
Ecco la citazione di la documentazione:
Zoom con Python Image Library

im.transform (dimensioni, affine, dati, filtro) => immagine

Si applica una trasformazione affine all'immagine, e pone il risultato in una nuova immagine con il formato specificato.

I dati sono una tupla da 6 (a, b, c, d, e, f) che contiene le prime due righe da una matrice di trasformazione affine. Per ciascun pixel (x, y) nell'immagine di output, il nuovo valore viene preso da una posizione (a x + b y + c, d x + e y + f) nell'immagine di input, arrotondata al pixel più vicino.

Questa funzione può essere utilizzata per ridimensionare, tradurre, ruotare e tagliare l'immagine originale.

risposta

5

Sarebbe molto meglio usare il metodo EXTENT anziché il metodo AFFINE. Hai solo bisogno di calcolare due cose: quale parte dell'input vuoi vedere e quanto dovrebbe essere grande. Ad esempio, se vuoi vedere l'intera immagine ridimensionata a metà (ovvero con lo zoom indietro di 2), devi passare i dati (0, 0, im.size [0], im.size [1]) e la dimensione (im.size [0]/2, im.size [1]/2).

+0

Grazie per le informazioni, ha funzionato grande :) –

0

Si applica una trasformazione affine e una trasformazione lineare seguita da una traduzione. Ma dovresti solo ridimensionare una porzione dell'immagine usando il metodo di ridimensionamento. C'è un po 'di codice riportato nella seguente SO rispondere:

+0

Grazie, sto usando la portata, ma che ad esempio è stato molto utile:) –

Problemi correlati