21 messaggi dal 18 novembre 2005
Ciao a tutti,
mi succede una cosa strana
ho fatto uno script per fare l'upload sul server di una foto (jpg) e una volta salvata viene creata la sua miniatura

lo script è il seguente:

Dim filePath As String = Request.PhysicalApplicationPath
filePath = filePath & "fotoeventi\"


Dim strNomeFoto As String = TextBox_Nome_Foto.Text & ".jpg"
Dim intDimensioneFile As Integer = FileUpload1.PostedFile.ContentLength


FileUpload1.SaveAs(filePath & "original_" & strNomeFoto)

Dim objFoto As System.Drawing.Bitmap
Dim objGraphics As System.Drawing.Image

'recupero le dimensioni della foto originale
objFoto = New Drawing.Bitmap(filePath & "original_" & strNomeFoto)
Dim intLarghezzaFoto As Integer = objFoto.Width
Dim intAltezzaFoto As Integer = objFoto.Height

'creo la miniuatura
Dim intDimensioniMassimeFotoPiccola As Integer = 280 'dimensioni massime della miniatura
Dim intNuovaLarghezzaFotoPiccola As Integer
Dim intNuovaAltezzaFotoPiccola As Integer

If intLarghezzaFoto > intAltezzaFoto Then
intNuovaLarghezzaFotoPiccola = intDimensioniMassimeFotoPiccola
intNuovaAltezzaFotoPiccola = (intAltezzaFoto * intDimensioniMassimeFotoPiccola) / intLarghezzaFoto
ElseIf intAltezzaFoto > intLarghezzaFoto Then
intNuovaLarghezzaFotoPiccola = (intLarghezzaFoto * intDimensioniMassimeFotoPiccola) / intAltezzaFoto
intNuovaAltezzaFotoPiccola = intDimensioniMassimeFotoPiccola
Else
intNuovaLarghezzaFotoPiccola = intDimensioniMassimeFotoPiccola
intNuovaAltezzaFotoPiccola = intDimensioniMassimeFotoPiccola
End If

objGraphics = objFoto.GetThumbnailImage(intNuovaLarghezzaFotoPiccola, intNuovaAltezzaFotoPiccola, Nothing, IntPtr.Zero)

'salvo la miniatura
objGraphics.Save(filePath & "small_" & strNomeFoto)



lo script funziona la foto originale viene caricata e la miniatura viene creata... ma... cosa assurda... la miniatura pesa (in KB) di più della foto originale!!!

ma com'è possibile ???

Dove sbaglio ?



Grazie a tutti!
176 messaggi dal 04 giugno 2007
Contributi | Blog
A naso il problema e' l'encoding.

Dal Vangelo secondo MSDN:

"If no encoder exists for the file format of the image, the Portable Network Graphics (PNG) encoder is used. When you use the Save method to save a graphic image as a Windows Metafile Format (WMF) or Enhanced Metafile Format (EMF) file, the resulting file is saved as a Portable Network Graphics (PNG) file. This behavior occurs because the GDI+ component of the .NET Framework does not have an encoder that you can use to save files as .wmf or .emf files."

In soldoni, mi sa che tu mandi una JPEG (lossy) e il tuo codice salva una PNG (lossless).
Questa e' la ragione per cui invece di

objGraphics.Save(filePath & "small_" & strNomeFoto)


proverei a usare esplicitamente

objGraphics.Save(filePath & "small_" & strNomeFoto, <b>ImageFormat.Jpeg</b>)


Se non e' questo, verificherei le impostazioni di default della compressione JPEG - magari la tua immagine iniziale e' molto piu' compressa.

HTH

--Alessandro

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.