Ich mache ein Foto und speichern Sie als Bild im Cache. Ich nenne auch das Bild und speichere den Namen, um ihn später zu finden.Speichern Hi Auflösung Bilder in Couchbase lite
if ((requestCode == REQUEST_IMAGE_CAPTURE && resultCode == Activity.RESULT_OK)){
Bitmap photo = (Bitmap) intent.getExtras().get("data");
//save photo
Date dTime = new Date();
String pictureName = String.valueOf(dTime.getTime()).substring(1,10);
// saved in internal program cache storage
String extr = getCacheDir().toString();
File myPath = new File(extr, "DVIR");
if (!myPath.exists()) {
myPath.mkdirs();
}
FileOutputStream fos;
try {
fos = new FileOutputStream(myPath + "/" + pictureName + ".png");
assert photo != null;
photo.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.flush();
fos.close();
MediaStore.Images.Media.insertImage(getContentResolver(),
photo, myPath.getPath(), pictureName + ".png");
photos.add(pictureName);
} catch (FileNotFoundException e) {
e.printStackTrace();
Toast toast = Toast.makeText(getApplicationContext(),
String.valueOf(e), Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
} catch (Exception e) {
e.printStackTrace();
Toast toast = Toast.makeText(getApplicationContext(),
String.valueOf(e), Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
Bild wird abgerufen und als Dokumentanhang gespeichert, Bildnamen werden im Array fotos [] gespeichert.
try {
assert document != null;
document.putProperties(properties);
if(photos.size()>0) {
String pName;
for(int i=0;i<photos.size();i++){
pName = photos.get(i);
UnsavedRevision newRev = document.getCurrentRevision().createRevision();
newRev.setAttachment(pName + ".png", "image/png", getphotoFromStorage(pName));
newRev.save();
}
}
} catch (CouchbaseLiteException e) {
e.printStackTrace();
Toast toast = Toast.makeText(getApplicationContext(),
"Save Failed" + e, Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Wenn ich ein Foto abrufe, ist ein 400 Pixel breites Bild pixelig.
Irgendwelche Ideen? Danke
Ich bin verwirrt. Gibt es etwas, das Sie denken lässt, dass dies ein Problem mit Couchbase Lite ist? Soweit es CBL betrifft, ist das Bild nur ein binärer Fleck, so dass es nicht mit der Komprimierung oder irgendetwas zu tun hat. Haben Sie überprüft, dass das Bild nicht von der anderen Bearbeitung (photo.compress oder MediaStore) geändert wird? – Hod
Ich bin mir nicht sicher, welcher Teil des Prozesses die Auflösung reduziert. Das erinnert mich daran, wie ich das Bild betrachte. Ich betrachte das Bild in einer Web-App, die angularjs und pouchdb verwendet, um das Bild vom Couchbase-Server abzurufen. Wie kann ich die Größe überprüfen oder das Bild in der Mitte des Prozesses sehen? Danke für deine Hilfe. –
Ich würde mit Inspektionstools beginnen, um zu sehen, wie groß das Bild tatsächlich ist, wenn es im Browser gerendert wird. Dies scheint das wahrscheinlichste Problem zu sein. Ansonsten würde ich an verschiedenen Stellen die Größe in Bytes des Bildes überprüfen. Das zweithäufigste Problem, das ich vermutete, ist das, was von getPhotoFromStorage zurückgegeben wird. Ihr Foto wurde möglicherweise nicht so gespeichert, wie Sie es erwartet haben. – Hod