8 messaggi dal 19 settembre 2001
Salve amici,

ho creato un modulo di upload di immagini con asp, al termine vorrei dare la possibilità, cliccando sull'immagine caricata di ridimensionarla con le dimensioni max di 500 px di larghezza. Ebbene con una request.QueryString("URL_foto") invio il tutto a questo codice asp.net:

Sub Page_Load(Server as Object,e as System.EventArgs)
Dim redimFoto as String = Request.Querystring("foto")
Dim RedimSizeThumb as integer = CInt(150)
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


dov'è il problema???? La qualità dell'immagine ridimensionata.... una schifezza!

Avete qualche script che prendono l'url di una foto e la ridimensionano con poca perdita di qualità, o addirittura con la possibilità di gestire la qualità????
Oppure si può imnplementare lo script sopra...e come??

Grazie...sto impazzendo e non riesco ad uscirne!

Mad Effe
prova con questo frammento (previa traduzione in VB)

protected void WriteBitmap(Bitmap bitMap)
    {
      Encoder myEncoder;
      EncoderParameter myEncoderParameter;
      myEncoder = Encoder.Quality;
      EncoderParameters myEncoderParameters = new EncoderParameters(1);
      myEncoderParameter = new EncoderParameter(myEncoder,85L);
      myEncoderParameters.Param[0] = myEncoderParameter;
      ImageCodecInfo myImageCodecInfo = GetEncoderInfo("image/jpeg");
      HttpContext.Current.Response.ContentType = "image/jpeg";
      bitMap.Save(HttpContext.Current.Response.OutputStream, myImageCodecInfo, myEncoderParameters);
      
    }


il nodo sta quà
myEncoder = Encoder.Quality


discorso apparte per le gif

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

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.