2012-04-17 20 views
6

W mojej aplikacji, mam wywoływanie aplikacji aparatu i robienia zdjęć i zapisanie go w określonym katalogu (Np/sdcard etc)Jak zmniejszyć rozmiar JPEG w Androidzie

Obraz jest zapisywany w formacie JPEG obraz. Jak zmniejszyć rozmiar obrazu? Czy dostępny jest dostępny koder lub kompresja obrazu?

natknąłem innego delegowania na: Android Reduce Size Of Camera Picture

Ale to jest skalowanie obrazu. Szukam czegoś, co może kompresować lub kodować. Czy to możliwe?

Dzięki z góry, Perumal

+0

http://stackoverflow.com/questions/4943016/android-how-to-compress-or-downsize-an-image – m4n07

+0

http://stackoverflow.com/pytania/6464062/kompres-obraz-w-android – m4n07

+0

[Spójrz z tym linkiem] [1] [1]: http://stackoverflow.com/questions/10081008/outofmemoryerror-in- gra z wieloma małymi obrazami/10086141 # 10086141 Mam nadzieję, że ci to pomoże. –

Odpowiedz

13

nie jestem pewien, w każdym razie można spróbować to one.For zmniejszenie rozmiaru obrazu najpierw powinieneś przekonwertować obraz na mapę bitową przed zapisaniem go w konkretnym katalogu i skompresować bitmapę ustawić jakość obrazu i zapisać go na właściwej ścieżce. Jakość obrazu można zmienić i mam nadzieję, że to pomoże ci zmniejszyć rozmiar obrazu.

bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);` 

API:

compress (Bitmap.CompressFormat format, int quality, OutputStream stream) 
+0

'100' oznacza dobre czy złe? – faisal1208

+0

@ faisal1208 100 oznacza najlepszą jakość. – Adrian

1

Może być poniżej fragment kodu jest przydatna dla Ciebie

 opt = new BitmapFactory.Options(); 
     opt.inTempStorage = new byte[16 * 1024]; 
     opt.inSampleSize = 4; 
     opt.outWidth = 640; 
     opt.outHeight = 480; 
     Bitmap imageBitmap = BitmapFactory 
       .decodeStream(in, new Rect(), opt); 
     Bitmap map = Bitmap.createScaledBitmap(imageBitmap, 100, 100, true); 
     BitmapDrawable bmd = new BitmapDrawable(map); 
     ByteArrayOutputStream bao = new ByteArrayOutputStream(); 
     map.compress(Bitmap.CompressFormat.PNG, 90, bao); 
     ba = bao.toByteArray(); 
     imagedata=Base64.encodeBytes(ba); 
Powiązane problemy