So berechnen Sie die verbleibenden Fotos zählt in benutzerdefinierten Kamera in Android

7

Ich versuche, die verbleibende Anzahl an Fotos zu berechnen, die mit meiner benutzerdefinierten Kamera aufgenommen werden können, und zeige diese Anzahl dem Benutzer an. Ich habe es mit folgendem Code versucht:

%Vor%

Methode für die Auflösung.

%Vor%

PROBLEM: Es gibt viele Unterschiede in der Anzahl, die in der Kamera des Handys angezeigt wird und die Anzahl, die in meiner App angezeigt wird.

Was ist der richtige Weg, dies zu tun?

HINWEIS: Ich werde nur Bilder in der höchsten verfügbaren Qualität aufnehmen. Deshalb berechne ich nur die Zählung nach einer einzigen Auflösung.

    
Vivek Mishra 14.09.2017, 18:02
quelle

4 Antworten

2

Nachdem ich viel geforscht und gegoogelt hatte, kam ich zu diese Website.

Nach dieser Site folgen die Schritte zum Abrufen der Dateigröße.

  1. Multiplizieren Sie die Anzahl der horizontalen Pixel des Detektors mit der Anzahl der vertikalen Pixel, um die Gesamtzahl der Pixel des Detektors zu erhalten.
  2. Multiplizieren Sie die Gesamtzahl der Pixel mit der Bittiefe des Detektors (16 Bit, 14 Bit usw.), um die Gesamtzahl der Datenbits zu erhalten.
  3. Teilen der Gesamtzahl der Bits durch 8 entspricht der Dateigröße in Bytes.
  4. Teilen Sie die Anzahl der Bytes durch 1024, um die Dateigröße in Kilobyte zu erhalten. Teilen Sie erneut durch 1024 und erhalten Sie die Dateigröße in Megabyte.

Wenn ich also die obigen Schritte befolgt habe, d. h. die Auflösung meiner Detektoren ist 5376X3024. Wenn ich mit den obigen Schritten fortfahre, habe ich schließlich 39 MB als Antwort auf die Bildgröße erhalten.

Aber das Bild, das von der Kamera aufgenommen wurde, hatte eine Größe von etwa 8-10 MB, was immer noch nicht annähernd dem Ergebnis im obigen Ergebnis entsprach.

Mein Telefon (HTC Desire 10 pro) verfügt über Pro-Modus-Einstellungen. In diesem Modus werden Fotos als Rohbilder aufgenommen. Als ich nach der Größe des aufgenommenen Rohbildes suchte, war ich amüsiert, da die Größe der Rohdatei tatsächlich 39 MB betrug, was besagt, dass die obigen Schritte für die Berechnung der Originalgröße des Bildes korrekt sind.

SCHLUSSFOLGERUNG

Mit den obigen Schritten kam ich zu dem Schluss, dass die Software des Telefons tatsächlich einige Komprimierungsalgorithmen verwendet, um die Bildgröße zu verringern. Also, was ich verglichen habe, war tatsächlich komprimierte Bilder, daher war die Anzahl der Bilder unterschiedlich.

WAHRSCHEINLICHE LÖSUNG

Der Ansatz, auf den ich jetzt hinarbeite, ist, das zuletzt angeklickte Bild von meiner Kamera zu bekommen, die Dateigröße zu ermitteln und die Anzahl entsprechend der Dateigröße anzuzeigen. Dies wird auch ein ungefähres Ergebnis sein, aber ich denke nicht, dass es eine Lösung geben kann, um genau zu zählen.

Dies ist der Code, den ich zur Implementierung der obigen Lösung verwende

%Vor%     
Vivek Mishra 17.09.2017, 15:53
quelle
4

Es ist unmöglich, die genaue Größe des Ausgabebildes für die JPEG / PNG-Komprimierung zu finden. Die Komprimierungsalgorithmen sind so optimiert, dass sie möglichst wenig Größe benötigen, aber die Bildpixel erhalten (obwohl JPEG leicht verlustbehaftet ist).

Sie können jedoch die Anzahl der Bilder schätzen, indem Sie mehrere Beispielfotos aufnehmen und das durchschnittliche Komprimierungsverhältnis berechnen.

Von Wikipedia :

  

JPEG erreicht normalerweise eine 10: 1-Komprimierung mit wenig wahrnehmbarem Verlust an Bildqualität.

Die geschätzte Speichergröße kann wie folgt berechnet werden:

%Vor%

Hier wird es mit 2 multipliziert, weil es in der RGB_565-Konfiguration 2 Bytes benötigt, um 1 Pixel zu speichern.

    
Nabin Bhandari 17.09.2017 10:35
quelle
2

Ich denke, dass es keine ultimative Lösung für die verbleibenden Bilder gibt, weil es zu viele verschiedene Geräte und Kameras gibt und es auch stark auf den Bildinhalt ankommt.

Eine gute Erklärung dafür habe ich hier

gefunden

Wie bereits erwähnt, können Sie die Bildgröße vorhersagen und die Anzahl der Bilder basierend auf dem freien Speicherplatz eines Geräts berechnen. Um diese Vorhersage zu erhalten, versuchen Sie es zuerst auf Ihrem Gerät. Nachdem der Nutzer die App gestartet hat, können Sie seine letzten 10 Fotogrößen in die Berechnung einbeziehen. Wenn es sich nicht um ein Schlüsselmerkmal handelt, können Sie es nur als Vorhersage basierend auf der Verwendung präsentieren, nicht als verbindliche Tatsache.

P.S. Ich benutze Samsung Galaxy S7 Rand und es gibt keine Bilder übrig in der Kamera zählen überhaupt. (Oder ich finde es einfach nicht)

    
Matej Vukosav 17.09.2017 11:06
quelle
1

Ich denke, Sie können das DCIM-Verzeichnis (Default Camera Directory) nach der Anzahl der Dateien durchsuchen und die Größe aller Dateien berechnen und die durchschnittliche Größe erhalten, indem Sie die Anzahl der Dateien dividieren.

und Sie erhalten die durchschnittliche Größe der Kamera, die die Bilder erfasst Führen Sie die obigen Schritte in Asynctask aus.

und Sie haben bereits die verbleibende Größe in Bytes berechnet. Teilen Sie nun die verbleibende Größe mit der durchschnittlichen Größe und Sie erhalten die ungefähre Anzahl der Bilder, die Sie aufnehmen können.

    
Dev mantra 23.09.2017 17:23
quelle