44 votes

Android enregistrer la vue au format jpg ou png

Je voudrais écrire une application Android qui superpose en principe une superposition d'image sur une autre image, puis je souhaite enregistrer l'image avec la superposition au format jpg ou png. Fondamentalement, ce sera toute la vue que je voudrais sauver.

Un exemple de code serait très utile.

MODIFIER:

J'ai essayé vos suggestions et je reçois un pointeur nul sur la ligne étoilée.

  import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.os.Bundle;
import android.os.Environment;
import android.widget.LinearLayout;
import android.widget.TextView;

    public class EditPhoto extends Activity {
        /** Called when the activity is first created. */
     LinearLayout ll = null;
     TextView tv = null;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            tv = (TextView) findViewById(R.id.text);
            ll = (LinearLayout) findViewById(R.id.layout);
            ll.setDrawingCacheEnabled(true);
            Bitmap b = ll.getDrawingCache();
            File sdCard = Environment.getExternalStorageDirectory();
            File file = new File(sdCard, "image.jpg");
            FileOutputStream fos;
      try {
       fos = new FileOutputStream(file);
       *** b.compress(CompressFormat.JPEG, 95,fos);
      } catch (FileNotFoundException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }

        }
    }
 

94voto

Moncader Points 2156

Vous pouvez tirer parti du cache de dessin d'une vue.

 view.setDrawingCacheEnabled(true);
Bitmap b = view.getDrawingCache();
b.compress(CompressFormat.JPEG, 95, new FileOutputStream("/some/location/image.jpg"));
 

Où vue est votre vue. Le 95 est la qualité de la compression JPG. Et le flux de sortie de fichier est juste cela.

7voto

plugmind Points 4546
 File sdCard = Environment.getExternalStorageDirectory();
File file = new File(sdCard, "image.jpg");
FileOutputStream fos = new FileOutputStream(file);
 

Utilisez la référence fos en tant que troisième paramètre de la méthode b.compress () dans la réponse de Moncader. L'image sera stockée sous le nom image.jpg dans le répertoire racine de votre carte SD.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X