Speichern der bitmap in app-Ordner
Wenn meine app das erste mal startet, es lässt den Benutzer wählen Sie ein Profil-Bild. Diese kann getan werden, nehmen Sie ein Foto im moment, oder wählen Sie es aus der Galerie.
Nachdem der Benutzer bekommt ein Bild, dieses muss gespeichert werden, in das Gerät den internen Speicher und wird in der app-Benutzer-Profil-Bild.
Dieser Prozess funktioniert, der Benutzer bekommt das Bild und dieses zeigt sich in einer Bildansicht, bevor es gespeichert. Aber um das Bild zu speichern in den internen Speicher, ich habe einige Schwierigkeiten. Ich habe versucht, mehrere Möglichkeiten, es zu tun, und die meisten von Ihnen scheinen zu arbeiten. Aber wenn ich Ihnen versuche, das Bild wird nicht gespeichert werden oder zumindest finde ich nicht den Ordner, wo es gespeichert wird.
Habe ich versucht, in diesen 3 Möglichkeiten:
Erste:
File directory = getDir("profile", Context.MODE_PRIVATE);
File mypath = new File(directory, "thumbnail.png");
FileOutputStream fos = null;
try {
fos = new FileOutputStream(mypath);
mybitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
Zweite:
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
mybitmap.compress(Bitmap.CompressFormat.PNG, 90, bytes);
FileOutputStream fos = null;
try {
fos = openFileOutput("thumbnail.png", Context.MODE_PRIVATE);
fos.write(bytes.toByteArray());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Dritte:
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
mybitmap.compress(Bitmap.CompressFormat.PNG, 90, bytes);
File fileWithinMyDir = new File(getFilesDir(), "thumbnail.png");
try {
FileOutputStream fos = new FileOutputStream(fileWithinMyDir);
fos.write(bytes.toByteArray());
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Suposedly, das Bild wird gespeichert unter dem Pfad: android/data/AppName/app_data/
aber es wird kein Ordner angelegt. Jedenfalls habe ich in anderen Ordnern, aber nichts.
BEARBEITEN-
In der ersten Methode, die ich gesehen habe, ist das werfen einer Ausnahme:
E/SAVE_IMAGE﹕ /data/data/com.example.myapp/app_profile/thumbnail.png: open failed: EISDIR (Is a directory)
java.io.FileNotFoundException: /data/data/com.example.myapp/app_profile/thumbnail.png: open failed: EISDIR (Is a directory)
Caused by: libcore.io.ErrnoException: open failed: EISDIR (Is a directory)
Ich brauche nicht zu schreiben auf externen Speicher
InformationsquelleAutor masmic | 2015-05-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach dem Versuch mehrere Dinge, das ist, was schließlich für mich gearbeitet hat:
Im Grunde der Sache ist zu prüfen, ob das Verzeichnis (nicht die Datei) vorhanden ist, und wenn nicht, erstellen Sie es mit mkdir().
Context#getDir()
den Ordner erstellt wenn es nicht existiert, so ruftmkdir()
redundant ist (Quelle: Context.java Dokumentation)Wie haben Sie zusammen all diese Methoden, die machen die ganze Arbeit? Haben Sie kopieren Sie einige Stücke der code von dieser und jener person? Ich war schon immer von kopieren Menschen den code. Ich kann nie zusammen einen funktionierenden code.
Eine Frage. Habe ich gespeichert, aber jetzt, wo finde ich es?
InformationsquelleAutor masmic
Können Sie diese imagesaver Klasse zum speichern von bitmap-Bild, um Ihre app-Ordner
Das Bild saver Klasse code ist unten angegeben
}
dann in Ihrer Tätigkeit, wo Sie immer die bitmap vom server(mit Glide-oder Picasso-Sie können jede Methode)
sollten Sie
setExternal
rufen Sie vor.setDirectory
ich update meine Antwort @IgnacioAra
InformationsquelleAutor Sam Raju
verstehen Ihre Anforderung. Unter einfügen von einigen Stück code, das ich getestet und funktioniert.Im Grunde bekommen Sie das Bild von der Kamera und speichern Sie es im app-Speicher.bitte gehen Sie durch es. Hoffe, das hilft.Cheers..
//Für speichern Bild...
//..Zu laden Bild aus dem Speicher
könnte Ihnen zeigen, wie Sie erstellt eine Instanz von sharedpreferences um es zu erreichen, ist die edit-Methode?
InformationsquelleAutor Jovin
Gut, Sie brauchen, um den Ordner zu erstellen wenn es nicht vorhanden ist.
versuchen Sie diesen code ausführen und sehen, ob es behebt Ihr Problem:
hast du Schreibrechte in Ihrem manifest?
<nutzt-Erlaubnis android:name="android.die Genehmigung.WRITE_EXTERNAL_STORAGE" />
Muss ich haben, die Berechtigung zum schreiben in den INTERNEN Speicher?
JA, Sie brauchen die Erlaubnis
InformationsquelleAutor JozeRi
Versuchen, diese ...
Sollten Sie die Bitmap.compress () - Methode zum speichern einer Bitmap als Datei. Es wird zu komprimieren (wenn das format es erlaubt) Ihr Bild und drücken Sie Sie in einen Ausgabestrom.
Hier ist ein Beispiel für eine Bitmap-Instanz, die durch getImageBitmap(myurl), komprimiert im JPEG-Format mit einer Kompressionsrate von 85% :
InformationsquelleAutor Quick learner