Ho una schermata che prendo nella mia app mobile. Lo screenshot richiede circa 32 KB se salvato come png su un disco.Come ridurre la dimensione di un'immagine in C# e .NET 3.5?
Invio questi a un server SQL centrale e 32 KB è troppo grande per il numero di volte necessario per archiviare tale schermata (circa 2500 volte al giorno).
C'è qualche tipo di inganno che posso fare per farlo risparmiare?
Ecco il codice che sto usando ora di prendere da Bitmap
a byte (da inviare al server per l'archiviazione):
MemoryStream stream = new MemoryStream();
_signatureImage.Save(stream, ImageFormat.Png);
return stream.ToArray();
_signatureImage
è un Bitmap
ed è lo screenshot in questione.
Ecco un esempio di schermata Mi risparmio:
Cose che compaiono in mente (ma non so come fare loro):
- Ridurre l'altezza e la larghezza effettive dell'immagine (ma si spera in un modo che non la distorca).
- Cambiare su un'immagine in bianco e nero (non sono sicuro se vedrò risparmi di spazio reali da questo)
- Comprimerlo di più (non mi piace tanto perché non è leggibile dal database) .
Nota, tutto ciò deve essere fatto in modo programmatico e non può richiedere molto tempo, così le complesse manipolazioni di immagini sono fuori.
Grazie per qualsiasi aiuto.
Non riesco a vedere l'immagine che hai postato (http filtrata al lavoro). Quali sono le dimensioni? – Kendrick
@Kendrick È 480 x 640. – jdmichal