Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Capire la compressione delle immagini JPEG
martedì 14 giugno 2005 - 11.48
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
digitalxp
Profilo
| Newbie
12
messaggi | Data Invio:
mar 14 giu 2005 - 11:48
Salve amici, girando un po per forum e script ho trovato questo che utilizzo per ridurre le dimensioni di immagini caricate su un sito.
il problema è che la compressione è troppo bassa... eppure (non ci capisco molto di .NET) non vedo il parametro che la gestisce! Come posso inserirlo e dove?
guardate un po che schifezza:
http://www.tracousticsound.it/donne/foto.asp?ID=31
digitalxp
Profilo
| Newbie
12
messaggi | Data Invio:
mar 14 giu 2005 - 11:50
lo script è in allegato perchè se lo inserisco qui mi da errore!
totti240282
Profilo
| Guru
1.574
messaggi | Data Invio:
mar 14 giu 2005 - 13:07
il txt non si legge sarei interessato anche iograzie.
digitalxp
Profilo
| Newbie
12
messaggi | Data Invio:
mar 14 giu 2005 - 13:18
come faccio a postare il codice?
digitalxp
Profilo
| Newbie
12
messaggi | Data Invio:
mar 14 giu 2005 - 13:23
Sub Page_Load(Server as Object,e as System.EventArgs)
Dim redimFoto as String = Request.Querystring("foto")
Dim RedimSizeThumb as integer = CInt(500)
Dim RedimSizeFoto as integer = CInt(500)
ReDimImg("" & redimFoto ,"" & RedimFoto,RedimSizeThumb,0)
ReDimImg("" & redimFoto ,"" & RedimFoto,RedimSizeFoto,0)
End Sub
Public Sub ReDimImg(SourcePath as String,ResizeName as string, width as integer,height as integer)
Try
'Creo l'oggetto di riferimento al file originale
Dim TmpBmp as System.Drawing.Bitmap = CType(System.Drawing.Image.FromFile(Server.MapPath(SourcePath)), System.Drawing.Bitmap)
Dim newWidth,newHeight as string
'Se il parametro height è lasciato a 0 costruisco il with in maniera proporzionata
if height = 0 Then
newHeight = Convert.ToInt32(width / TmpBmp.Width * TmpBmp.Height)
else
newHeight = height
End if
'Se il parametro with è lasciato a 0 costruisco l'height in maniera proporzionata
if width = 0 Then
newWidth = Convert.ToInt32(height / TmpBmp.Height * TmpBmp.Width)
else
newWidth = width
end if
'Creo la miniatura con lunghezza e larghezza elaborati
Dim miniaturabmp as New System.Drawing.Bitmap(TmpBmp, newWidth, newHeight)
'Distruggo l'oggetto dell'immagine originale che non mi serve +
TmpBmp.Dispose()
'controllo l'estensione e salvo la miniatura nel giusto formato
if SourcePath.toLower().EndsWith(".jpg") or SourcePath.toLower().EndsWith(".jpeg") Then
miniaturabmp.Save(Server.MapPath(ResizeName), System.Drawing.Imaging.ImageFormat.Jpeg)
elseif SourcePath.toLower().EndsWith(".gif") Then
miniaturabmp.Save(Server.MapPath(ResizeName), System.Drawing.Imaging.ImageFormat.Gif)
elseif SourcePath.toLower().EndsWith(".png") Then
miniaturabmp.Save(Server.MapPath(ResizeName), System.Drawing.Imaging.ImageFormat.Png)
else
Response.Write("Errore Formato")
'Si puo' ampliare l'elseif in questo modo:
'elseif SourcePath.toLower().EndsWith(".[Estensione]") Then
'miniaturabmp.Save(Server.MapPath(ResizeName), System.Drawing.Imaging.ImageFormat.[Estensione])
'dove [Estensione] puo essere Bmp, Emf, Exif, Tiff, Wmf
end if
miniaturabmp.Dispose()
Catch ex as System.Exception
'Nel caso stampo l'errore:
Response.Write("<hr>Errore nel ridimensionamento dell'immagine:<br>" & ex.Message & "<br><br>")
Response.Write("<br>" & ex.StackTrace & "<hr>")
End Try
Response.Write("Ridimensionamento effettuato con successo")
End Sub
digitalxp
Profilo
| Newbie
12
messaggi | Data Invio:
mar 14 giu 2005 - 13:55
non mi è stato motlo d'aiuto! Quel codice che ho postato mi sta benissimo....se non fosse per la compressione troppo alta....c'è un modo di modificarla?
digitalxp
Profilo
| Newbie
12
messaggi | Data Invio:
mar 14 giu 2005 - 14:31
Dunque sto quasi impazzendo ma ce la posso fare... ho trovato questo codice per determinare l'encoder dell'immagine caricata
mimeType = "image/jpeg"
Function GetEncoderInfo(mimeType As String) As ImageCodecInfo
Dim encoders() As ImageCodecInfo
encoders = ImageCodecInfo.GetImageEncoders()
For j As Integer = 0 To encoders.Length - 1
If encoders(j).MimeType = mimeType Then
Return encoders(j)
End If
Next
Return Nothing
End Function
e poi questo per salvare la nuova immagine:
' imposta la compressione a 40
Dim qualityEncoder As Encoder = Encoder.Quality
Dim quality As EncoderParameter = New EncoderParameter(qualityEncoder, 40)
' aggiunge il parametro di compressione
Dim codecParams As New EncoderParameters(1)
codecParams.Param(0) = quality
' salva in JPG
bmp.Save(fileName, jpegCodecInfo, codecParams)
bene...ehm, ehm...ora come li inserisco nel codice che già avevo?
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 14 giu 2005 - 16:01
Ciao,
la programmazione non è un copia e incolla di codice, come sarebbe a dire adesso come fai ad inserirlo nel codice che già avevi ? Non ci si improvvisa programmatori da oggi a domani.
ciao
david
digitalxp
Profilo
| Newbie
12
messaggi | Data Invio:
mar 14 giu 2005 - 18:09
so benissimo che la programmazione non è copia incolla e non pretendo di diventare programmatore in un giorno! Però un forum esiste per darsi una mano... e la soluzione del mio problema può servire per altri.... penso sia questa l'utilità dei forum! o sbaglio?? Cos' come ho adattato quel codice di ridimensionamento per un upload da pagina asp...penso che chi se ne intende potrebbe aiutarmi ad imlementare quella funzione ed effettuare anche la giusta compressione!
LudovicoVan
Profilo
| Junior Member
106
messaggi | Data Invio:
mar 14 giu 2005 - 20:11
Ciao,
quello che sperimenti non è un livello di compressione troppo alto, bensì una perdita di qualità dovuta al ridimensionamento dell'immagine. Per risolvere questo problema non basta lavorare sulle proprietà dell'Encoder, occorre anche passare per un oggetto Graphics.
In allegato ho messo un moduletto che fa il lavoro richiesto. Spero che non sia troppo difficile da copiare, incollare e... invocare. ;-)
Coach: se hai voglia di dargli un'occhiata, ci sarebbero poche linee di codice in più rispetto all'articolo qui sul forum e non mi offenderei se voleste aggiornarlo (è un piccolo contributo che do volentieri). Senza quelle poche righe in più, i risultati prodotti dal metodo GetThumbnailImage sono per lo più inaccettabili.
HTH. -LV
fabiodm75
Profilo
| Newbie
2
messaggi | Data Invio:
mer 31 mag 2006 - 17:39
Dove è l'allegato volevo provarlo...
LudovicoVan
Profilo
| Junior Member
106
messaggi | Data Invio:
mer 31 mag 2006 - 18:30
81_ImageToWeb.zip
Non saprei, non passo da queste parti da parecchio. Forse non era uno zip ed è stato rimosso?
Lo riallego qui, sperando che funzioni ancora... ;)
HTH. -LV
(Peace X Love] = [++1)
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !