post creato da Igor Baldacci il 14/06/2011 nella categoria ASP.NET
Modificare le Immagini
Procedura ASP.NET per modificare le dimensioni e la risoluzione delle immagini.
 

ABSTRACT

La procedura presentata di seguito permette di modificare sia le dimensioni in pixel che la risoluzione (dpi) delle immagini uploadate sul proprio sito. La procedura si presta bene a modificare le immagini uploadate sul sito e a creare quindi delle copie thumb di dimensioni e peso ridotto. Utile, quindi, per la creazione di gallerie di immagini personalizzate.

LA PROCEDURA

Di seguito la procedura implementata in linguaggio VB (per la traduzione in codice C# consiglio questo link: http://www.carlosag.net/Tools/CodeTranslator/).

    Public Shared Sub ModificaImmagine(ByVal NomeImmagineOrigine As String, _
                                       ByVal CartellaOrigine As String, _
                                       ByVal NomeImmagineDestinazione As String, _
                                       ByVal CartellaDestinazione As String, _
                                       ByVal maxWidth As Integer, _
                                       Optional ByVal maxHeight As Integer = Nothing, _
                                       Optional ByVal Resolution As Integer = Nothing)

        Try

            Dim NomePathImmagineOrigine As String = CartellaOrigine & "\" & NomeImmagineOrigine
            Dim sourceImage As System.Drawing.Image = System.Drawing.Image.FromFile(NomePathImmagineOrigine)
            '
            Dim originalImage As New Bitmap(NomePathImmagineOrigine)
            '
            ' Definisce Dimensioni
            '
            Dim newWidth As Int32 = originalImage.Width
            Dim newHeight As Int32 = originalImage.Height
            '
            If maxHeight <> Nothing Then

                Dim aspectRatio As Double = Double.Parse(originalImage.Width) / Double.Parse(originalImage.Height)
                '
                If (aspectRatio <= 1 And originalImage.Width > maxWidth) Then

                    newWidth = maxWidth
                    newHeight = CInt(Math.Round(newWidth / aspectRatio))

                ElseIf (aspectRatio > 1 And originalImage.Height > maxHeight) Then

                    newHeight = maxHeight
                    newWidth = CInt(Math.Round(newHeight * aspectRatio))

                End If

            Else

                Dim DimensioniOrigX As Integer = originalImage.Width
                Dim DimensioniOrigY As Integer = originalImage.Height
                '
                Dim DimensioniX As Integer = 0
                Dim DimensioniY As Integer = 0
                Dim DimensioneXMax As Integer = maxWidth
                '
                If DimensioniOrigX >= DimensioneXMax Then

                    DimensioniX = DimensioneXMax
                    DimensioniY = (DimensioniOrigY / DimensioniOrigX) * DimensioniX

                Else

                    DimensioniX = DimensioniOrigX
                    DimensioniY = DimensioniOrigY

                End If
                '
                newWidth = DimensioniX
                newHeight = DimensioniY

            End If
            '
            Dim newImage As New Bitmap(originalImage, newWidth, newHeight)
            '
            If Resolution <> Nothing Then
                newImage.SetResolution(Resolution, Resolution)
            End If
            '
            Dim g As Graphics = Graphics.FromImage(newImage)
            '
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear
            g.DrawImage(originalImage, 0, 0, newImage.Width, newImage.Height)
            originalImage.Dispose()
            '
            Dim FileToUpload As String = CartellaDestinazione & "\" & NomeImmagineDestinazione
            '
            newImage.Save(FileToUpload)
            '
            newImage.Dispose()

        Catch ex As Exception

            Throw ex

        End Try

    End Sub

 
Etichette: procedura, sub, immagini, risoluzione, dpi, ridimensionamento
 
elenco commenti


inserisci commento
 
codice di sicurezza (copia i caratteri che vedi nell'immagine)
Visual verification  
 
 
 
Area Blog
il framework .net
11/05/2011
 
 
elenco categorie
ASP.NET
1 post associati
 
ricerca nel blog