Wie kann ich ein Bild in die Galerie abspeichern ???

  • Antworten:20
Philipp Hörig
  • Forum-Beiträge: 106

28.08.2014, 18:16:17 via Website

Hallo liebe Community, ich habe eine Frage u.z was muss ich tun / was muss ich hinzufügen das meine Kamera ein Bild in die Galerie speichert ???

public class MainActivity extends Activity implements SurfaceHolder.Callback{

Camera camera;
SurfaceView surfaceView;
SurfaceHolder surfaceHolder;
boolean previewing = false;
LayoutInflater controlInflater = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

  getWindow().setFormat(PixelFormat.UNKNOWN);
  surfaceView = (SurfaceView)findViewById(R.id.camerapreview);
  surfaceHolder = surfaceView.getHolder();
  surfaceHolder.addCallback(this);
  surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

  controlInflater = LayoutInflater.from(getBaseContext());
  View viewControl = controlInflater.inflate(R.layout.control, null);
  LayoutParams layoutParamsControl
   = new LayoutParams(LayoutParams.FILL_PARENT,
   LayoutParams.FILL_PARENT);
  this.addContentView(viewControl, layoutParamsControl);

  Button buttonTakePicture = (Button)findViewById(R.id.takepicture);
  buttonTakePicture.setOnClickListener(new Button.OnClickListener(){

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
camera.takePicture(myShutterCallback,
myPictureCallback_RAW, myPictureCallback_JPG);
}});
}

ShutterCallback myShutterCallback = new ShutterCallback(){

@Override
public void onShutter() {
// TODO Auto-generated method stub

}};

PictureCallback myPictureCallback_RAW = new PictureCallback(){

@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub

}};

PictureCallback myPictureCallback_JPG = new PictureCallback(){

@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub
Bitmap bitmapPicture
= BitmapFactory.decodeByteArray(arg0, 0, arg0.length);
}};

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
if(previewing){
camera.stopPreview();
previewing = false;
}

if (camera != null){
try {
camera.setPreviewDisplay(surfaceHolder);
camera.startPreview();
previewing = true;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
camera = Camera.open();
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
camera.stopPreview();
camera.release();
camera = null;
previewing = false;
}
}

Lg Philipp // Never touch a bugging system :)

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.640

28.08.2014, 20:52:06 via App

@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub
try
{
FileOutputStream fos = new FileOutputStream(path);
Bitmap bitmapPicture
= BitmapFactory.decodeByteArray(arg0, 0, arg0.length);

        bitmapPicture.compress(Bitmap.CompressFormat.PNG, 90, fos);
        fos.close();
    }
    catch (FileNotFoundException e)
    {}
    catch (IOException e)
    {}
}

Damit sollte dein Foto in den internen Ordner für Bilder gespeichert werden.

— geändert am 28.08.2014, 20:54:56

Ich sammle gerne Namen in meinem Death Note.

Samsung Galaxy Note 2<3 -> Samsung Galaxy Note 3 <3

Antworten
Philipp Hörig
  • Forum-Beiträge: 106

29.08.2014, 13:37:24 via Website

FileOutputStream fos = new FileOutputStream(path);

path wir bei mir als error angezeigt warum ???

Lg Philipp // Never touch a bugging system :)

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.640

29.08.2014, 13:48:55 via App

Entschuldige, das war mein fehler

String path = Environment.DIRECTORY_PICTURES.toString();

Ich sammle gerne Namen in meinem Death Note.

Samsung Galaxy Note 2<3 -> Samsung Galaxy Note 3 <3

Antworten
Philipp Hörig
  • Forum-Beiträge: 106

29.08.2014, 14:01:27 via Website

Er speicher das Bild aber nicht in die Galerie ab ?!

Hast du eine Idee warum nicht ???

— geändert am 29.08.2014, 14:13:50

Lg Philipp // Never touch a bugging system :)

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.640

29.08.2014, 14:26:22 via App

Wo werden sie dann gespeichert?

Ich sammle gerne Namen in meinem Death Note.

Samsung Galaxy Note 2<3 -> Samsung Galaxy Note 3 <3

Antworten
Philipp Hörig
  • Forum-Beiträge: 106

29.08.2014, 14:30:21 via Website

Keine Ahnung auf jeden Fall nicht in die Galerie.

Lg Philipp // Never touch a bugging system :)

Antworten
Philipp Hörig
  • Forum-Beiträge: 106

29.08.2014, 15:48:44 via Website

Ich habe das jetzt bei beiden public void onPictureTaken probiert und die Bilder werden nicht abgespeichert warum ???

Lg Philipp // Never touch a bugging system :)

Antworten
Philipp Hörig
  • Forum-Beiträge: 106

30.08.2014, 10:04:40 via App

Ich möchte aber die Bilder nicht auf eine SD-Karte speichern !!!

Lg Philipp // Never touch a bugging system :)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

30.08.2014, 10:27:46 via Website

Tut mir leid das so zu sagen, aber mir scheint du hast kaum ahnung des Ganzen.
Du könntest auch mal selber tätig werden und bei google etc. danach suchen.
Verstehst du den Code überhaupt?

Ich möchte aber die Bilder nicht auf eine SD-Karte speichern !!!

Niemand hat gesagt das du das tun musst.

PS: Du pushst schonwieder...

PPS: https://www.google.de/?gws_rd=ssl#q=android+write+bitmap+to+file

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Philipp Hörig
  • Forum-Beiträge: 106

30.08.2014, 10:39:47 via App

Ich habe bei Google mehrere Stundenlang nach Code für das Thema gesucht doch habe nichts gefunden was funktioniert hat und deswegen frage ich in einem Forum wie diesem nach einer Lösung.

Und ja ich kenne mich mit dem Thema Kamera gerade nicht wirklich aus.

Lg Philipp // Never touch a bugging system :)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

30.08.2014, 10:42:53 via Website

Dann schau doch in der Google suche in meinem Link:
http://www.java2s.com/Code/Android/2D-Graphics/SaveBitmaptoandloadfromExternalStorage.htm

Zudem brauchst du zu deiner Frage keine Kamerafunktionen sondern es geht um das abspeichern eines Files/Bildes.

Hast du die Zugrhörige Permission in der Manifest gesetzt?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Philipp Hörig
  • Forum-Beiträge: 106

30.08.2014, 11:02:16 via Website

Ja <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> oder gibt es noch eine andere permission dafür???

Lg Philipp // Never touch a bugging system :)

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

30.08.2014, 11:21:28 via App

Nein mir ist keine bekannt die für dein Vorhaben fehlt.

— geändert am 30.08.2014, 11:21:42

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.960

30.08.2014, 13:37:10 via Website

Alex Wieser

Entschuldige, das war mein fehler

String path = Environment.DIRECTORY_PICTURES.toString();

Sollte das nicht so sein:

File file = new File(getExternalFilesDir(null), "DemoPicture.jpg");
// /storage/sdcard0/Android/data/{DEIN PACKAGENAME}/files/DemoPicture.jpg

oder

File path = Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES);
File file = new File(path, "DemoPicture.jpg");
// /storage/sdcard0/Pictures/DemoPicture.jpg

oder

File directory = new File(Environment.getExternalStorageDirectory().getPath()+"/Test/");
            directory.mkdirs();
File file = new File(directory, "DemoFile.jpg");
// /storage/sdcard0/Test/DemoFile.jpg

— geändert am 30.08.2014, 14:10:20

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.640

30.08.2014, 14:10:06 via App

Gibt Environment.DIRECTORY_PICTURES.toString etwa nur den Speicher des Externen Speichers zurück?

Ich sammle gerne Namen in meinem Death Note.

Samsung Galaxy Note 2<3 -> Samsung Galaxy Note 3 <3

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.960

30.08.2014, 14:15:08 via Website

Environment.DIRECTORY_PICTURES.toString ist keine Pfad angabe! Und das toString ist auch nicht nützlich da es schon ein String ist.

Das würde passieren: java.io.FileNotFoundException: /Pictures/DemoFile.jpg: open failed: ENOENT (No such file or directory)

— geändert am 30.08.2014, 14:16:44

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Antworten
Gelöschter Account
  • Forum-Beiträge: 2.640

30.08.2014, 14:18:46 via App

Ich musste .toString anhängen, weil AIDE es sonst (aus welchen Gründen auch immer) als Fehler betrachtet.

Ich sammle gerne Namen in meinem Death Note.

Samsung Galaxy Note 2<3 -> Samsung Galaxy Note 3 <3

Antworten
Philipp Hörig
  • Forum-Beiträge: 106

31.08.2014, 10:46:49 via Website

Und was ist jetzt ???

Lg Philipp // Never touch a bugging system :)

Antworten
Gelöschter Account
  • Forum-Beiträge: 336

09.09.2014, 23:56:42 via App

Wahrscheinlich greift die Kamera App auf den MediaStore von Android zurück. Du musst dem MediaStore auch sagen, dass du eine Datei hinzu haben willst. Zum Beispiel so:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageAdded)));

Android Developer

Antworten