Modificare la qualità di un'immagine JPEG da una pagina ASP.NET

di Andrea Zani, in UserScript, ASP.NET, System.Drawing,

Il formato grafico JPEG permette di impostare la qualità dell'immagine stessa, particolarità che permette il risparmio della dimensione in bytes dell'immagine con un degrado della qualità. Questa opzione, presente in tutti i programmi di grafica, permette di selezionare tale qualità da una scala che varia da 0 a 100 (0 bassa qualità, 100 immagine di altissima qualità).

Anche in .NET, quando manipoliamo immagini JPEG, possiamo decidere e impostare tale qualità. Lo script successivo carica in memoria un'immagine da una cartella del server e prima della sua visualizzazione modifica la qualità a "50". Invito a provare a modificare la variabile "compressione" per vedere le varie differenze nella visualizzazione dell'immagine e la sua dimensione in bytes.

Tale script è utilizzabile con alcune modifiche anche abbinandolo allo script suggerito da Cristian Civera per l'upload e il controlo delle dimensioni in modo da deciderne la qualità prima della memorizzazione (#446).

<%@ import namespace="System.Drawing" %>
<%@ import namespace="System.Drawing.Imaging" %>
<script language="vb" runat="server">
Private Sub Page_Load()
  dim bm as BitMap
  try
    Response.Clear()
    bm= New Bitmap(Request.MapPath("cartella/immagine.jpg"))
    Dim encParams As EncoderParameters =  New EncoderParameters()
    '0 = minima qualità (immagine molto "sgranata")
    '100 = massima qualità (immagine "perfetta")
    Dim compressione As Integer =  50
    dim encParam as New EncoderParameter(Imaging.Encoder.Quality, compressione)
    encParams.Param(0) = encParam
    Dim imageCodecs() As ImageCodecInfo =  ImageCodecInfo.GetImageEncoders()
    Dim imageCodec As ImageCodecInfo =  Nothing
    Dim i As Integer
    For i = 0 to imageCodecs.Length- 1
      If imageCodecs(i).MimeType="image/jpeg" Then
        imageCodec = imageCodecs(i)
        Exit For
      End If
    Next

    'invio a video
    Response.ContentType="image/jpeg"
    bm.Save(Response.OutputStream, imageCodec, encParams)
  catch
    Response.Write ("Impossibile visualizzare l'immagine!")
  finally
    if not bm is nothing then bm.Dispose()
  end try
  
End Sub
</script>

Approfondimenti

#446 - Upload con ASP.NET di immagini con controllo su content type, dimensione e larghezza/altezza
https://www.aspitalia.com/script/446/Upload-ASP.NET-Immagini-Controllo-Content-Type-Dimensione-Larghezza.aspx

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi