2012-08-26 40 views
5

Este es mi código y quiero que el botón Guardar imagen simplemente guarde la imagen en la galería.Guardar imagen en la galería

package com.nk_apps.hip.hop.lyric.wallpapers; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ImageView; 

public class Wallpapers extends Activity implements OnClickListener { 
} 
    ImageView display; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.wallpapers); 

     display = (ImageView) findViewById(R.id.IVDisplay); 
     ImageView image1 = (ImageView) findViewById(R.id.IVimage1); 
     ImageView image2 = (ImageView) findViewById(R.id.IVimage2); 
     ImageView image3 = (ImageView) findViewById(R.id.IVimage3); 
     ImageView image4 = (ImageView) findViewById(R.id.IVimage4); 
     ImageView image5 = (ImageView) findViewById(R.id.IVimage5); 
     ImageView image6 = (ImageView) findViewById(R.id.IVimage6); 
     ImageView image7 = (ImageView) findViewById(R.id.IVimage7); 
     ImageView image8 = (ImageView) findViewById(R.id.IVimage8); 
     ImageView image9 = (ImageView) findViewById(R.id.IVimage9); 
     Button saveImage = (Button) findViewById(R.id.bSaveImage); 

     image1.setOnClickListener(this); 
     image2.setOnClickListener(this); 
     image3.setOnClickListener(this); 
     image4.setOnClickListener(this); 
     image5.setOnClickListener(this); 
     image6.setOnClickListener(this); 
     image7.setOnClickListener(this); 
     image8.setOnClickListener(this); 
     image9.setOnClickListener(this); 
     saveImage.setOnClickListener(this); 
    } 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     switch (v.getId()) { 

     case R.id.IVimage1: 
      display.setImageResource(R.drawable.aotl); 
      break; 
     case R.id.IVimage2: 
      display.setImageResource(R.drawable.ball_so_hard); 
      break; 
     case R.id.IVimage3: 
      display.setImageResource(R.drawable.eye); 
      break; 
     case R.id.IVimage4: 
      display.setImageResource(R.drawable.faded); 
      break; 
     case R.id.IVimage5: 
      display.setImageResource(R.drawable.hiii_power); 
      break; 
     case R.id.IVimage6: 
      display.setImageResource(R.drawable.i_invented_swag); 
      break; 
     case R.id.IVimage7: 
      display.setImageResource(R.drawable.lifes_a_bitch); 
      break; 
     case R.id.IVimage8: 
      display.setImageResource(R.drawable.mack_truck); 
      break; 
     case R.id.IVimage9: 
      display.setImageResource(R.drawable.opposite); 
      break; 
     case R.id.bSaveImage: 

      break; 
     } 

    } } 

Quiero saber qué poner en el último caso. Y si no debería ponerlo allí, ¿podría decirme exactamente?

Gracias por cualquier ayuda, realmente luchando con tomar todo en.

Respuesta

10

ahorro de cualquier imagen en la Galería puede hacerse por:

MediaStore.Images.Media.insertImage(getContentResolver(), yourBitmap, yourTitle , yourDescription); 
+0

Lo siento, pero realmente no sé dónde poner ninguno de estos, como dije antes, soy un verdadero aficionado y sigo asistiendo a tutoriales. – user1619978

+0

Este es el código para guardar cualquier imagen seleccionada en la galería. Use esto en los lugares donde quiera guardarlo. – Swayam

+0

"caso R.id.bSaveImage:. \t InputStream INPS = getResources() openRawResource (R.drawable.aotl); \t Bitmap bmp = BitmapFactory.decodeStream (INPS); \t MediaStore.Images.Media.insertImage (getContentResolver(), bmp, "Fondo de pantalla 1", "Descripción"); \t \t \t break; " ¿Voy por la línea correcta? ¿Supuse que tendría que señalar la imagen a un directorio en la tarjeta SD en un punto? – user1619978

0

En un onClick oyente, puede utilizar esto para salvar su imagen a la galería,

FrameLayout mainLayout = (FrameLayout) findViewById(R.id.frame); 
        Random fCount = new Random(); 
        int roll = fCount.nextInt(600) + 1; 
        File file = new File(Environment 
          .getExternalStorageDirectory() 
          + File.separator 
          + "/your_folder_name/" + String.valueOf(roll) + ".png"); 

        Bitmap b = Bitmap.createBitmap(mainLayout.getWidth(), 
          mainLayout.getHeight(), Bitmap.Config.ARGB_8888); 
        Canvas c = new Canvas(b); 
        mainLayout.draw(c); 
        FileOutputStream fos = null; 
        try { 
         fos = new FileOutputStream(file); 
         if (fos != null) { 
          b.compress(Bitmap.CompressFormat.PNG, 90, fos); 
          fos.close(); 
         } 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
+0

Lo siento, pero realmente no sé dónde poner ninguno de estos, como he dicho antes, soy un verdadero aficionado y todavía sigo los tutoriales. – user1619978

0

Simplemente, necesita una función que le pasará sus imágenes. Ver todo el código how to save image to gallery in android programmatically

private void saveImageToExternalStorage(Bitmap finalBitmap) { 
     String root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString(); 
     File myDir = new File(root + "/saved_images_1"); 
     myDir.mkdirs(); 
     Random generator = new Random(); 
     int n = 10000; 
     n = generator.nextInt(n); 
     String fname = "Image-" + n + ".jpg"; 
     File file = new File(myDir, fname); 
     if (file.exists()) 
      file.delete(); 
     try { 
      FileOutputStream out = new FileOutputStream(file); 
      finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
      out.flush(); 
      out.close(); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 
} 

En el evento de clic llamar a su función y transmitir las imágenes de mapa de bits como a la función.

switch (v.getId()) { 

     case R.id.IVimage1: 
      saveImageToExternalStorage(img1); 
     break; 

     case R.id.IVimage2: 
      saveImageToExternalStorage(img2); 
     break; 

     case R.id.IVimage3: 
      saveImageToExternalStorage(img3); 
     break; 
} 
Cuestiones relacionadas