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?
EDIT (ecco il codice richiesto):
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?
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