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

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>

Per approfondimenti si veda:
#446 - Upload con ASP.NET di immagini con controllo su content type, dimensione e larghezza/altezza


Approfondimenti

Commenti

Esprimi il tuo giudizio su questo script:

Per procedere devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




IN EVIDENZA
MISC