2016-07-15 3 views
0

Ich muss ein Bild auf den Server hochladen, der ziemlich groß ist, aber ich möchte das Seitenverhältnis beibehalten, aber komprimiere die Größe der Datei, weil ich mehrere Dateien hochlade.Wie komprimiere ich das Bild, ändere es aber nicht? Mit Xamarin IOS?

+0

In der Frage, die Sie sagen, behalten Sie das Seitenverhältnis, aber im Titel sagen Sie nicht die Größe zu ändern. Sind Sie bereit, die Größe des Bildes zu ändern, um eine kleinere Breite und Höhe zu erhalten und gleichzeitig das Seitenverhältnis beizubehalten? Sie können eine Komprimierung erhalten, indem Sie eine JPG- oder PNG-Darstellung mit 'UIImage.AsJPEG()' oder 'UIImage.AsPNG()' ohne Größenänderung senden. Die Größenänderung auf ein kleineres Bild kann noch mehr Speicherplatz sparen. – dylansturg

Antwort

1

Wenn Sie das Bild nicht in der Größe ändern möchten, wird es beim Senden als JPEG und PNG kleiner als nur das Senden der Bitmap-Daten. Sie können NSData Darstellung des Bildes in PNG oder JPEG erhalten. Es gibt einige Vor-und Nachteile für jedes Format, aber JPEG ermöglicht Qualität für mehr Kompression zu opfern.

* Angenommen, Sie haben eine UIImage mit dem Namen image.

using(NSData pngImage = image.AsPNG()){ 
    byte[] imageBytes = pngImage.ToArray(); 
    // upload your image data, write to a file, etc. 
} 

// AsJPEG compression argument can be 0 to 1 
// 0 is max compression (lowest quality), 1 is best quality 
using(NSData jpgImage = image.AsJPEG(0.0f)){ 
    byte[] imageBytes = jpgImage.ToArray(); 
    // upload your image data, write to a file, etc. 
} 

Sie können auch AsJPEG in einer Schleife mit den Werten der Kompression die Verringerung der Bildgröße unterhalb einer bestimmten Schwelle zu versuchen und zu erhalten. Das könnte ein wenig langsam sein, also müssen Sie die Vorteile für Ihre spezifische Verwendung gewichten.

+0

danke ..... arbeitete für mich :) –

+0

@VibhaRKedilaya Froh, dass ich helfen könnte. Glückliche Entwicklung. – dylansturg

+0

Haben Sie eine Idee, das gleiche in Xamarin Android zu implementieren? –

Verwandte Themen