Oppure

Loading
20/06/11 21:50
Question
Salve a tutti,
ho creato un programma che necessita di salvare un'immagine alla fine di un processo e vorrei farlo senza farle perdere eccessiva qualità e senza raddoppiarne il peso.
Il problema è che con il metodo Save di Image posso scegliere tra una quantità limitata di formati.

Non riesco a trovarne uno che mantenga la qualità senza incrementare eccessivamente lo spazio occupato dal file.
Ora come ora ho scelto di usare PNG ma anche lui non scherza affatto: una foto da 9mb viene incrementata a 19mb, mentre formati come JPEG e GIF fanno diventare l'immagine uno schifo :-|

Qualcuno ha idee migliori? :hail:


EDIT (ecco il codice richiesto):
 ''' <summary>Draws the logo on the specified image. The location is oriented by ImageAlignment</summary>
    ''' <param name="Immy">Image where the logo has to be painted</param>
    ''' <param name="Logo">Image that has to be painted</param>
    ''' <param name="Distance">Logo distance from borders</param>
    Friend Sub WaterMark(ByVal Immy As Image, ByVal Logo As Image, ByVal Distance As Size)
        Dim X, Y As Int32

        Select Case LogoAlignment 'set coordinates
            Case Alignment.TopLeft
                X = Distance.Width
                Y = Distance.Height
            Case Alignment.TopRight
                X = Immy.Width - (Distance.Width + Logo.Width)
                Y = Distance.Height
            Case Alignment.BottomLeft
                X = Distance.Width
                Y = Immy.Height - (Distance.Height + Logo.Height)
            Case Alignment.BottomRight
                X = Immy.Width - (Distance.Width + Logo.Width)
                Y = Immy.Height - (Distance.Height + Logo.Height)
        End Select

        Using Painter As Graphics = Graphics.FromImage(Immy) 'paint
            Painter.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
            Painter.DrawImage(Logo, X, Y, Logo.Width, Logo.Height)
        End Using
    End Sub

    ''' <summary>Defines the logo watermarking orientation</summary>
    Friend Enum Alignment
        TopLeft
        TopRight
        BottomLeft
        BottomRight
    End Enum
Ultima modifica effettuata da Question 23/06/11 12:59
aaa
20/06/11 23:10
HeDo

credo che lavorando un po con l'oggetto Image o Bitmap puoi riuscire a specificare i parametri di compressione, in questo modo lo adatti alle tue necessità.
aaa
21/06/11 8:26
Qwertj
Non è il formato png che ti gonfia l'immagine, probabilmente è quello che ci fai tu sopra. :yup:
Il formato PNG sarebbe il migliore, perchè applica una compressione lossless e quindi la qualità dell'immagine rimane invariata, mentre con JPEG la compressione è lossy e l'immagine perde qualità.
aaa