E 'un lavoro molto complicato in quanto si avrebbe bisogno di un sacco di conoscenza circa l'elaborazione delle immagini.
Ancora più importante, reinventare la ruota è una brutta mossa.
http://www.codeproject.com/Articles/83225/A-Simple-JPEG-Encoder-in-C
Date un'occhiata del progetto codice di cui sopra che affronta solo JPEG; per non dire TIFF, GIF, BMP, ecc.
La compressione delle immagini coinvolge molte trasformazioni matematiche complesse, come DCT e Huffman.
Avrai bisogno di un intero semestre universitario per apprendere le nozioni di base.
D'altro canto, utilizzando saggiamente il supporto della piattaforma, è possibile completare l'operazione entro un minuto.
BitmapEncoder in Windows Phone.
FileStream stream = new FileStream("new.jpg", FileMode.Create);
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.QualityLevel = 30;
encoder.Frames.Add(BitmapFrame.Create(image));
encoder.Save(stream);
Bitmap in Android
using (System.IO.Stream stream = System.IO.File.Create(targetFile))
{
bitmap.Compress(Bitmap.CompressFormat.Jpeg, 30, stream);
}
UIImage in iOS
NSData data = image.AsJPEG(0.3);
Bitmap in .NET framework
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
ImageCodecInfo codec = codecs.First(t => t.FormatID == ImageFormat.Jpeg.Guid);
EncoderParameters parameters = new EncoderParameters(1);
parameters.Param[0] = new EncoderParameter(Encoder.Quality, 30L);
bitmap.Save("output.jpg", codec, parameters);
Non credo che ci sia un modo per farlo nel codice di forme "pure" a meno che non si voglia scrivere tutta la logica dell'immagine da zero, che sarebbe un'enorme quantità di codice. Affidarsi alle funzionalità di gestione delle immagini native altamente ottimizzate di ciascuna piattaforma sembra un modo migliore di procedere, anche se questo ti obbliga a utilizzare DI. – Jason
Quando si seleziona il browser degli oggetti della libreria di riferimento .NET, viene visualizzata la libreria portatile System.Drawing. Come importare quella libreria? –
system.drawing consente di utilizzare questa risposta. http://stackoverflow.com/a/24199315/5495701 – Slepz