Effettivamente il problema
non è banale in quanto richiede di analizzare il file .jpg
prima di caricare l'immagine.
Riccardo ha posto la stessa domanda anche a Gianni Giaccaglini che
propone questa soluzione veramente carina ed efficace:
Function RappDimImmagine(FileImg As String) As Double
Sheets.Add
ActiveSheet.Pictures.Insert (FileImg)
With ActiveSheet.Shapes(1)
ratio = .Height / .Width
End With
Application.DisplayAlerts = False 'Elimina il foglio aggiuntivo
senza proteste
ActiveSheet.Delete
RappDimImmagine = ratio
End Function
Sub TestRappDimImg()
MsgBox RappDimImmagine("C:\Documents and
Settings\giaccaglini\Documenti\Immagini\Micio.jpg")
End Sub
La procedura funziona molto bene e funziona in questo modo: crea un
foglio nuovo di supporto, carica l'immagine così come si trova
sul disco, ne verifica le dimensioni, calcola il rapporto d'aspetto e
butta via l'immagine utilizzata. La procedura è efficace e
funziona bene ma è un po' macchinosa.
Riccardo invece propone una differente versione che si basa
sull'algoritmo di David Crowell (il cui algoritmo per VB è
disponibile all'indirizzo
http://www.freevbcode.com/ShowCode.Asp?ID=112)
ed è disponibile per download all'indirizzo:
L'algoritmo va a leggere direttamente in formato binario i file .jpg e
ad estrarne le proprietà. Di fatto legge le informazioni del
file senza bisogno di caricare l'immagine e dunque risulta molto
più veloce e agile.
Espirimiamo i nostri sinceri complimenti sia a Riccardo Ufilugelli sia
a Gianni Giaccaglini per le loro splendide realizzazioni. Non avremmo
saputo fare di meglio!
Link correlati: il blog di gianni Giaccaglini:
http://blog.shareoffice.it/giannigiaccaglini/