Android, Kompresowanie obrazu
Wysyłam obraz przez sieć za pośrednictwem sieci Wi-Fi lub sieci komórkowej, aby zapisać go na serwerze i ponownie pobrać. Zrobiłem to, ale ze względu na rozmiar zdjęć zrobionych przez aparat, to sprawia, że moja aplikacja jest powolna, żeby podkreślić, że otwieram galerię i robię zdjęcia stamtąd i nie robię zdjęcia bezpośrednio z aplikacji. Zauważyłem, że obrazy z WhatsApp pobrane z aparatu i galerii zostały skompresowane do około. 100kb.
W tej chwili mój kod pobiera plik i konwertuje go na bajty, a następnie wysyła. Oto metoda pobierania pliku i konwertowania go na bajty.
<code>private void toBytes(String filePath){ try{ File file = new File(filePath); InputStream is = new BufferedInputStream(new FileInputStream(file)); ByteArrayOutputStream buffer = new ByteArrayOutputStream(); bytes = new byte[(int) filePath.length()]; int bytes_read; while((bytes_read = is.read(bytes, 0, bytes.length)) != -1){ buffer.write(bytes, 0, bytes_read); } is.close(); bytes = buffer.toByteArray(); }catch(Exception err){ Toast.makeText(getApplicationContext(), err.toString(), Toast.LENGTH_SHORT).show(); } } </code>
Moje pytanie brzmi: w jaki sposób mogę skompresować mój obraz przed wysłaniem? Nie potrzebuję też obrazu, aby zachować dużą liczbę pikseli, ponieważ gdy aplikacja używa obrazu, zajmie tylko połowę ekranu urządzenia.
Dziękujemy za pomoc.