PDA

Visualizza la versione completa : [Generico] Ridimensionamento immagine.. Come funziona il mantenimento delle proporzioni?


deamon75
10-06-2014, 16:08
Ho scaricato un tool di windows che permette di ridimensionare le immagini mantenendo le proporzioni... In pratica la stessa cosa che fa Photoshop quando si allargano le immagini tenendo premuto il tasto "Shift" o non ricordo quale...

Qualcuno saprebbe spiegarmi 1. la teoria con cui mantiene le proporzioni? 2. Programmaticamente come svolge questa operazione il programma? (io uso VBNet però ho detto il topic è generico)

MarcoMontagna
10-06-2014, 22:30
Quando ridimensioni l'immagine devi guardare se stai ingrandendo o rimpicciolendo. Nel primo caso devi generare dei nuovi pixel che prima non esistevano, mentre nel secondo caso devi "sacrificare" parte dei pixel in base alla dimensione della nuova immagine. Naturalmente il problema più complesso è quello dell'ingrandimento, perché devo generare pixel che prima non c'erano. Le varie tecniche di interpolazione si basano tipicamente sulla media. Prova a cercare su Google "interpolazione immagini" e vedrai quanto materiale c'è sull'argomento :D

deamon75
11-06-2014, 00:48
Quindi programmaticamente parlando sarebbe veramente un bel malloppo da gestire

MItaly
11-06-2014, 01:03
Uhm, sul mantenere le proporzioni non c'è niente da capire, basta moltiplicare/dividere entrambi i lati per lo stesso fattore quando si determinano le "nuove" altezza e larghezza.

Per l'"inventarsi" i pixel, è vero che esistono algoritmi sofisticati, ma una normale interpolazione lineare non è complessa da scrivere - quantomeno in maniera naïf (anche se sono sicuro che VB.NET già fornisca qualcosa a tal proposito).

Puoi leggerti una panoramica sull'argomento qui (http://en.wikipedia.org/wiki/Image_scaling).

deamon75
11-06-2014, 05:55
Uhm, sul mantenere le proporzioni non c'è niente da capire, basta moltiplicare/dividere entrambi i lati per lo stesso fattore quando si determinano le "nuove" altezza e larghezza.

Per l'"inventarsi" i pixel, è vero che esistono algoritmi sofisticati, ma una normale interpolazione lineare non è complessa da scrivere - quantomeno in maniera naïf (anche se sono sicuro che VB.NET già fornisca qualcosa a tal proposito).
Ora per curiosità ho provato a Googlare: "Vb.net Image scaling" e ci sono un pò di risultati anche se effettivamente non so se qualcuno fa esattamente quello di cui stiamo parlando...


Puoi leggerti una panoramica sull'argomento qui (http://en.wikipedia.org/wiki/Image_scaling).
Peccato sia inglese (in quanto è un bel malloppo) però ho letto qualcosa ed è veramente molto interessante e completo..

Ad ogni modo il tool che ho provato io ottenendo ottimi risultati è: https://imageresizer.codeplex.com/
Mi piacerebbe crearmi una mia versione, avete qualcosa da cui potrei partire parlando di Vb.Net o anche C# visto che sono quasi identici? Non ne ho un vero e proprio bisogno però appunto per far pratica :)

Loading