2012-07-03 24 views
5

Tengo una vista de imagen base que puede cargar imágenes desde la tarjeta sd. El usuario puede agregar templates(bitmap images) en esta vista de imagen al hacer clic en un botón y puede colocar la imagen agregada según las necesidades del usuario. Quiero guardar estas imágenes múltiples como una sola imagen en una tarjeta sd. ¿Cómo puedo hacer esto?Guardar múltiples imágenes en Android

Respuesta

3

Simplemente puede obtener DrawingCache de su ImageView, luego convertirlo a Bitmap y luego guardarlo en SDCARD.

imageview.setDrawingCacheEnabled(true); 
Bitmap b = imageview.getDrawingCache(); 
b.compress(CompressFormat.JPEG, 100, new FileOutputStream("/sdcard/image.jpg")); 

Es posible que tenga que establecer el permiso de escritura SDCARD en manifiesto.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
3

Tome un vistazo a este fragmento:

How to merge multiple images into one image - Java ImageIO

int rows = 2; //we assume the no. of rows and cols are known and each chunk has equal width and height 
     int cols = 2; 
     int chunks = rows * cols; 

     int chunkWidth, chunkHeight; 
     int type; 
     //fetching image files 
     File[] imgFiles = new File[chunks]; 
     for (int i = 0; i < chunks; i++) { 
      imgFiles[i] = new File("archi" + i + ".jpg"); 
     } 

     //creating a bufferd image array from image files 
     BufferedImage[] buffImages = new BufferedImage[chunks]; 
     for (int i = 0; i < chunks; i++) { 
      buffImages[i] = ImageIO.read(imgFiles[i]); 
     } 
     type = buffImages[0].getType(); 
     chunkWidth = buffImages[0].getWidth(); 
     chunkHeight = buffImages[0].getHeight(); 

     //Initializing the final image 
     BufferedImage finalImg = new BufferedImage(chunkWidth*cols, chunkHeight*rows, type); 

     int num = 0; 
     for (int i = 0; i < rows; i++) { 
      for (int j = 0; j < cols; j++) { 
       finalImg.createGraphics().drawImage(buffImages[num], chunkWidth * j, chunkHeight * i, null); 
       num++; 
      } 
     } 
     System.out.println("Image concatenated....."); 
     ImageIO.write(finalImg, "jpeg", new File("finalImg.jpg")); 
+1

¿Son estas clases disponibles en Android BufferedImage, ImageIO? –

+0

No lo intenté ... Solo una pista ... Eso es para archivos basados ​​en Java. – Venky

+0

Bueno, parece que estas clases no están disponibles en Android ... –

Cuestiones relacionadas