Wie optimiere ich das Bild wie Facebook und WhatApp?

Ich möchte die Image-Dateigröße optimieren wie whatsapp und facebook machen. Ich habe 5MB Bild auf whatsapp gesendet, Und erhielt Bild hat Größe von 80KB. Das empfangene Bild ist identisch mit dem Original, aber die Auflösung ist kleiner als das Original.

Ich habe fast alle Quellcodes der Android-Image-Kompression auf Stackoverflow, aber das funktioniert nicht für mich. Und dann kam ich über diesen Link , um das Bild zu optimieren, was gute Arbeit macht, aber immer noch nicht das Ergebnis wie whatsapp.

Wie kann ich eine maximale Bildkompression erreichen, ohne die Qualität des Bildes zu beeinträchtigen, wie ich auch getroffen habe?

Antwort mit einem Quellcode wird sehr hilfreich sein.

Danke im Voraus.

  • Wie konvertiert man Bild in Byte-Array und Byte-Array auf base64 String in Android?
  • Android ImageView-Einstellung Bitmap FitXY funktioniert nicht
  • Picasso lädt Bild mit Dreieck in Ecke des Bildes
  • Android, wie man eine 1mb Bilddatei herunterlädt und auf ImageView setzt
  • Android klar Webview Thread, kostenloser Speicher, vermeiden OutOfMemoryError
  • Wie bekomme ich Latitude und Longitude infromation aus dem Bild
  • Lazy Last von Bildern in ListView
  • Base64 Bild hochladen VS Binärer Bild hochladen?
  • 2 Solutions collect form web for “Wie optimiere ich das Bild wie Facebook und WhatApp?”

    Sie müssen das Bild (Bitmap)

    Hier ist der Code.

     public Bitmap decodeFile(String path) { // Decode image size int orientation; try { if (path == null) { return null ; } BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; // Find the correct scale value. It should be the power of 2. final int REQUIRED_SIZE = 70; int width_tmp = o.outWidth, height_tmp = o.outHeight; int scale = 0; while (true) { if (width_tmp / 2 < REQUIRED_SIZE || height_tmp / 2 < REQUIRED_SIZE) break; width_tmp /= 2; height_tmp /= 2; scale++; } BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; Bitmap bm = BitmapFactory.decodeFile(path, o2); Bitmap bitmap = bm; ExifInterface exif = new ExifInterface(path); orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 1); Log.e("orientation", "" + orientation); bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(),bm.getHeight(), null, true); ImageViewChooseImage.setImageBitmap(bitmap); bitmapfinal = bitmap; return bitmap ; } catch (Exception e) { e.printStackTrace(); return null; } } 

    Konvertieren Sie das Bild in Bitmap und verwenden Sie compress () – Methode, um es auf eine bestimmte Qualität zu komprimieren. Um die Qualität des Bildes zu erhalten, reduzieren Sie es mit dem Seitenverhältnis seiner Höhe und Breite. Sie können unter Code verwenden: wo Daten das Byte-Array des Bildes ist

     Bitmap screen = BitmapFactory.decodeByteArray(data, 0, data.length); float oHeight = screen.getHeight(); float oWidth = screen.getWidth(); float aspectRatio = oWidth / oHeight; int newHeight = 0; int newWidth = 0; newHeight = 450; newWidth = (int) (newHeight * aspectRatio); screen = Bitmap.createScaledBitmap(screen, newWidth, newHeight, true); ByteArrayOutputStream bos = new ByteArrayOutputStream(); screen.compress(Bitmap.CompressFormat.JPEG, 50, bos); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.