Newsgroup: it.comp.appl.access
Titolo: Gestione di Immagini

Ciao,
avevo postato qualche settimana fa un msg in cui chiedevo come gestire JPG
gigantesche.
Mi era stato risposto in modo efficace, ma purtroppo il mio problema si è
complicato.
Ora devo gestire non più solo JPG ma anche GIF e BMP, ed il problema è
sempre lo stesso, cioè leggere le loro dimensioni in pixel in modo da
ridimensionare il controllo immagine che le visualizza, in modo da
visuallizzarle interamente a zomm 100%, come richiesto dal mio cliente.
Purtroppo non ho molta dimestichezza con la gestione dei files in VB, quindi
l'idea di aprire i file in binario e leggerne i valori sarebbe scomoda per
me oltre che specifica per ciascun formato.
Fatemi sapere se avete idee. Grazie da subito.
Iper

 ha scritto nel messaggio
news:yjBa7.1824$fA3....@news.infostrada.it...

Ho trovato nei tips&tricks della rivista IoProgrammo uno script che potrebbe
aiutarti:
'-----------
Function ImageSize(immagine As String) As String
'
'utilizzata per sapere la dimensione in punti di un'immagine
'da IoProgrammo n.42 Dicembre 2000
'script originale per ASP e riadattato per VBA
'
Dim ritorno As String
Dim Formato As String
Dim Start As Integer, max As Integer, xs As Integer, xe As Integer, ys As
Integer, ye As Integer
Dim fso, ts
Dim s As String
Formato = Right(UCase(immagine), 3)
Select Case Formato
    Case "JPG"
        Start = 167: max = 4: xs = 3: xe = 4: ys = 1: ye = 2
    Case "PNG" 'ok
        Start = 24: max = 8: xs = 3: xe = 4: ys = 7: ye = 8
    Case "GIF"
        Start = 10: max = 4: xs = 2: xe = 1: ys = 4: ye = 3
    Case "BMP" 'ok
        Start = 24: max = 8: xs = 4: xe = 3: ys = 8: ye = 7
    Case "WMF"
        Start = 14: max = 4: xs = 2: xe = 1: ys = 4: ye = 3
    Case Else
End Select
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.openTextFile(immagine, 1)
s = Right(ts.read(Start), max)
ritorno = "Larghezza: " & HexToDec(HexAt(s, xs) & HexAt(s, xe)) & " per
Altezza: " & HexToDec(HexAt(s, ys) & HexAt(s, ye)) & " punti."
ts.Close
ImageSize = ritorno
End Function
Function HexAt(s, n)
HexAt = Hex(Asc(Mid(s, n, 1)))
If Len(HexAt) = 1 Then HexAt = "0" & HexAt
End Function
Function HexToDec(cadhex)
Dim n, i, ch, decimale
decimale = 0
n = Len(cadhex)
For i = 1 To n
    decimale = decimale * 16
    ch = Mid(cadhex, i, 1)
    decimale = decimale + InStr("0123456789ABCDEFabcdef", ch) - 1
Next
HexToDec = decimale
End Function
'-----------
La chiamata è: MsgBox ImageSize("c:\documenti\nomeImmagine.jpg")...
Ciao.

 [cut]
proprio in questi giorni sto lavorando su una cosa simile, e dopo aver
cercato  e trovato delle funzioni (simili alle tue) per reperire le
dimensioni direttamente dal file, ho scoperto che basta fare cosi':
ctlImg.Picture = "C:\NomeFile"
ctlImg.Width = ctlImg.ImageWidth
ctlImg.Height = ctlImg.ImageHeight
;-))
!!!!!!!!!!!!!!!!!!!!
-- 
Federico
----------------------------------
Rimuovi paperino. per e-mail
----------------------------------
Tutte le richieste che arrivano
in privato, vengono cestinate.
----------------------------------
Sito Comune di it.comp.appl.access
http://www.sitocomune.com
mailto:
webm...@sitocomune.com
----------------------------------

 ----------------------------------
Io pensavo che voleva leggere le dimensioni dell'immagine senza
visualizzarlo...
Ciao.

 ha scritto nel messaggio
news:9kojpt$n4$1...@canarie.caspur.it...
