Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion Problemas de memoria con imagenes
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Juan de Dios Maldonado Sánchez  
View profile   Translate to Translated (View Original)
 More options Nov 5 2012, 5:07 am
From: Juan de Dios Maldonado Sánchez <jua...@gmail.com>
Date: Mon, 5 Nov 2012 11:07:03 +0100
Local: Mon, Nov 5 2012 5:07 am
Subject: Re: [desarrolladores-android.com] Re: Problemas de memoria con imagenes

Dices: "La imagen que subo pesa 514kb y otra 1500 kb"
Te digo: No es lo que pesa, sino las dimensiones de la misma. (que es lo
que cuenta a la hora de cargarla en memoria) Creo que te has leído poco el
enlace que te pasé. :(

El problema es cuando cargas la imagen en memoria en un Bitmap. Por
ejemplo, si las dimensiones de la misma son 2592x1936 (da igual cuando
ocupe en el archivo en el que la tienes guardada, ya que dentro del archivo
viene comprimida), tienes que 2592*1936*4 = 19MB de memoria que necesitas
para cargarla en memoria. (Resumiendo: No hay forma de cargar esa imagen)

Lo que te digo es que no tiene sentido que tengas una imagen gigantesca si
luego lo que haces es mostrarla en un espacio muy pequeño.

Si aún quieres seguir por tu camino, allá tú.

2012/11/5 Jc Miñarro <josecarlos.mina...@gmail.com>

> Pero por qué te empeñas en guardar la imagen en el sharedPreferences??
> Guardala en la SD, comprimida o como quieras, pero no en el
> sharedPreferences.

> El 5 de noviembre de 2012 10:42, neon2004 <diego.cam...@bbvaglobalnet.com>escribió:

> Hola.

>> La imagen que subo pesa 514kb y otra 1500 kb, son imágenes sacadas con la
>> cámara del móvil. Aunque podría darse el caso de que alguien subiera una
>> bastante pesada y seria conveniente ver como poder quitarle calidad.

>> El tema de guardarlo en SD p en una bd sqlite no me sirve puesto que esta
>> imagen será el avatar del usuario y si este usuario se registra en otro
>> movil ya no tendria el avatar. Por eso lo subo a un servidor.

>> Lo que hago es seleccionar una imagen de la galería o tomar una foto y
>> mostrarla en un ImageButton. Al registrarse subo mediante ftp la imagen a
>> un servidor.
>> En el momento de logearse obtengo esa ruta y a partir de ella creo un
>> bitMap el que comprimo y paso a Base 64 para guardarlo en SharedPreferences.

>> Una vez logeado recupero esa SharedPreferences y muestro el bitMap en un
>> ImageButton.

>> El codigo de lo descrito anteriormente es el siguiente:

>> ACTIVITY REGISTRO

>> Selecciono o tomo una foto:

>> private void dialogPhoto() {
>>         try {
>>             final CharSequence[] items = { "Seleccionar de la galería",
>>                     "Hacer una foto" };

>>             AlertDialog.Builder builder = new AlertDialog.Builder(this);
>>             builder.setTitle("Seleccionar una foto");
>>             builder.setItems(items, new DialogInterface.OnClickListener()
>> {
>>                 public void onClick(DialogInterface dialog, int item) {
>>                     switch (item) {
>>                     case 0:
>>                         Intent intent = new Intent(
>>                                 Intent.ACTION_PICK,

>> android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
>>                         intent.setType("image/*");
>>                         startActivityForResult(intent, SELECT_IMAGE);
>>                         break;
>>                     case 1:
>>                         startActivityForResult(
>>                                 new Intent(

>> android.provider.MediaStore.ACTION_IMAGE_CAPTURE),
>>                                 TAKE_PICTURE);
>>                         break;
>>                     }

>>                 }
>>             });
>>             AlertDialog alert = builder.create();
>>             alert.show();
>>         } catch (Exception e) {
>>         }

>>     }

>>    @Override
>>     public void onActivityResult(int requestCode, int resultCode, Intent
>> data) {
>>         super.onActivityResult(requestCode, resultCode, data);
>>         Uri selectedImage = null;
>>         try {
>>             if (requestCode == SELECT_IMAGE)
>>                 if (resultCode == Activity.RESULT_OK) {
>>                      selectedImage = data.getData();

>>                      ruta = getPath(selectedImage);
>>                     int tamRuta = ruta.length();
>>                     int posBarra = ruta.lastIndexOf("/");
>>                      name = ruta.substring(posBarra+1);
>>                      setPic(btnAvatar,ruta);
>>          f = new File(ruta,name);

>>                 }
>>             if (requestCode == TAKE_PICTURE)
>>                 if (resultCode == Activity.RESULT_OK) {
>>                      selectedImage = data.getData();
>>                 }
>>         } catch (Exception e) {

>>         }

>>     }

>>     private String getPath(Uri uri) {
>>          String[] projection = {
>> android.provider.MediaStore.Images.Media.DATA };
>>          Cursor cursor = managedQuery(uri, projection, null, null, null);
>>          int column_index =
>> cursor.getColumnIndexOrThrow(android.provider.MediaStore.Images.Media.DATA) ;
>>          cursor.moveToFirst();
>>          return cursor.getString(column_index);
>>            }

>> Muestro la imagen seleccionada en el ImageButton:

>> private void setPic(ImageButton mImageView, String imageURI) {
>>             // Get the original bitmap dimensions
>>             BitmapFactory.Options options = new BitmapFactory.Options();
>>             options.inJustDecodeBounds = true;
>>             BitmapFactory.decodeFile(imageURI, options);

>>             // Calculate inSampleSize
>>             options.inSampleSize = calculateInSampleSize(options,
>> REQ_HEIGHT, REQ_WIDTH);

>>             // Decode bitmap with inSampleSize set
>>             options.inJustDecodeBounds = false;
>>             Bitmap bitmap = BitmapFactory.decodeFile(imageURI, options);

>>             //need rotation?
>>             float rotation = rotationForImage(this, Uri.fromFile(new
>> File(imageURI)));

>>             if (rotation != 0) {
>>                 //rotate
>>                 Matrix matrix = new Matrix();
>>                 matrix.preRotate(rotation);
>>                 mImageView.setImageBitmap(Bitmap.createBitmap(bitmap,
>> 180,100, REQ_HEIGHT, REQ_WIDTH, matrix, true)); // REQ_HEIGHT = 450,
>> REQ_WIDTH = 450

>>             } else {
>>                 //use the original

>> mImageView.setImageBitmap(BitmapFactory.decodeFile(imageURI, options));

>>             }

>>             SharedPreferences prefs =
>> getSharedPreferences("MisPreferencias",
>>                     Context.MODE_PRIVATE);
>>             SharedPreferences.Editor editor = prefs.edit();
>>             editor.putFloat(TAG_URIAVATAR, rotation);
>>             editor.commit();
>>         }

>>         public static int calculateInSampleSize(BitmapFactory.Options
>> options, int reqWidth, int reqHeight) {
>>             // Raw height and width of image
>>             final int height = options.outHeight;
>>             final int width = options.outWidth;
>>             int inSampleSize = 1;

>>             if (height > reqHeight || width > reqWidth) {
>>                 if (width > height) {
>>                     inSampleSize = Math.round((float) height / (float)
>> reqHeight);
>>                 } else {
>>                     inSampleSize = Math.round((float) width / (float)
>> reqWidth);
>>                 }
>>             }
>>             return inSampleSize;
>>         }

>>         public static float rotationForImage(Context context, Uri uri) {
>>             try {
>>                 if (uri.getScheme().equals("content")) {
>>                     String[] projection = {
>> Images.ImageColumns.ORIENTATION };
>>                     Cursor c = context.getContentResolver().query(uri,
>> projection, null, null, null);
>>                     if (c.moveToFirst()) {
>>                         return c.getInt(0);
>>                     }
>>                 } else if (uri.getScheme().equals("file")) {
>>                     ExifInterface exif = new ExifInterface(uri.getPath());
>>                     int rotation = (int)
>> exifOrientationToDegrees(exif.getAttributeInt(ExifInterface.TAG_ORIENTATION ,
>> ExifInterface.ORIENTATION_NORMAL));
>>                     return rotation;
>>                 }
>>                 return 0;

>>             } catch (IOException e) {
>>                 Log.e("ERROR", "Error checking exif", e);
>>                 return 0;
>>             }
>>         }

>>         private static float exifOrientationToDegrees(int
>> exifOrientation) {
>>             if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_90) {
>>                 return 90;
>>             } else if (exifOrientation ==
>> ExifInterface.ORIENTATION_ROTATE_180) {
>>                 return 180;
>>             } else if (exifOrientation ==
>> ExifInterface.ORIENTATION_ROTATE_270) {
>>                 return 270;
>>             }
>>             return 0;
>>         }

>> Subo mediante ftp la imagen al servidor:

>>  try{
>>                       FTPClient ftpClient = new FTPClient();
>>                       ftpClient.connect(InetAddress.getByName(servidor));
>>                       ftpClient.login(TAG_USERFTP, TAG_PASSFTP);

>>                       ftpClient.changeWorkingDirectory(TAG_URLIMAGEN);
>>                       ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
>>                       BufferedInputStream buffIn=null;
>>                       buffIn=new BufferedInputStream(new
>> FileInputStream(ruta));
>>                       ftpClient.enterLocalPassiveMode();
>>                       ftpClient.storeFile(name, buffIn);
>>                       buffIn.close();
>>                       ftpClient.logout();
>>                       ftpClient.disconnect();

>>                       avatarSubido = "Ok";
>>                       urlAvatar = name;

>>                 }catch (Exception e) {
>>                     Log.d("ERROR FTP: ", e.getMessage().toString());
>>                 }

>> ACTIVITY LOGEO

>> Creo un bitMap a partir de la ruta obtenida, lo comprimo, convierto a
>> Base64 y guardo en SharedPreferences

>> URL url = new URL(urlAvatarl);
>>                      bmp =
>> BitmapFactory.decodeStream(url.openConnection().getInputStream());

>>  ByteArrayOutputStream baos = new ByteArrayOutputStream();
>>          bmp.compress(Bitmap.CompressFormat.JPEG, 20, baos);   // AQUI
>> COMPRIMO LA IMAGEN SI NO ME EQUIVOCO

>>          byte[] b = baos.toByteArray();

>>          encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
>>         // TODO Auto-generated method stub

>>         SharedPreferences prefs = getSharedPreferences("MisPreferencias",
>>                 Context.MODE_PRIVATE);
>>         SharedPreferences.Editor editor = prefs.edit();

>> editor.putString(TAG_URLAVATAR, encodedImage);
>>         editor.commit();

>> ACTIVITY TRAS LOGEARSE

>> Recupero SharedPreferences y que viene en Base64, creo el bitMap y lo
>> muestro en un ImageButton

>>   urlAvatar = prefs.getString(TAG_URLAVATAR, "");
>>         rotation = prefs.getFloat(TAG_URIAVATAR, 0);
>>         setPic(btnPerfil,urlAvatar);

>> private void setPic(ImageButton mImageView, String imageURI) {
>>         // Get the original bitmap dimensions
>>         BitmapFactory.Options options = new BitmapFactory.Options();
>>         options.inJustDecodeBounds = true;

>>         byte[] b = Base64.decode(urlAvatar, Base64.DEFAULT);
>>         BitmapFactory.decodeByteArray(b, 0, b.length, options);

>>         // Calculate inSampleSize
>>         options.inSampleSize = calculateInSampleSize(options, REQ_HEIGHT,
>> REQ_WIDTH);

>>         // Decode bitmap with inSampleSize set
>>         options.inJustDecodeBounds = false;
>>         bmp = BitmapFactory.decodeByteArray(b, 0, b.length, options);

>>         //need rotation?
>> //        float rotation = rotationForImage(getApplicationContext(),
>> Uri.fromFile(new File(uriAvatar)));

>>         if (rotation != 0) {
>>             //rotate
>>             Matrix matrix = new Matrix();
>>             matrix.preRotate(rotation);
>>             mImageView.setImageBitmap(Bitmap.createBitmap(bmp, 180, 100,
>> REQ_HEIGHT, REQ_WIDTH, matrix, true));
>>         } else {
>>             //use the original
>>             mImageView.setImageBitmap(BitmapFactory.decodeByteArray(b, 0,
>> b.length, options));
>>         }
>>     }

>>     public static int calculateInSampleSize(BitmapFactory.Options
>> options, int reqWidth, int reqHeight) {
>>         // Raw height and width of image
>>         final int height = options.outHeight;
>>         final int width = options.outWidth;
>>         int inSampleSize = 1;

>>         if (height > reqHeight || width > reqWidth) {
>>             if (width > height) {
>>                 inSampleSize = Math.round((float) height / (float)
>> reqHeight);
>>             } else {
>>                 inSampleSize = Math.round((float) width / (float)
>> reqWidth);
>>             }
>>         }
>>         return inSampleSize;
>>     }

>>     public static float rotationForImage(Context context, Uri uri) {
>>         try {
>>             if (uri.getScheme().equals("content")) {
>>                 String[] projection = { Images.ImageColumns.ORIENTATION };
>>                 Cursor c = context.getContentResolver().query(uri,
>> projection, null, null, null);
>>                 if (c.moveToFirst()) {
>>                     return c.getInt(0);
>>                 }
>>             } else if (uri.getScheme().equals("file")) {
>>                 ExifInterface exif = new ExifInterface(uri.getPath());
>>                 int rotation = (int)
>> exifOrientationToDegrees(exif.getAttributeInt(ExifInterface.TAG_ORIENTATION ,
>> ExifInterface.ORIENTATION_NORMAL));
>>                 return rotation;
>>             }
>>             return 0;

>>         } catch (IOException e) {
>>             Log.e("ERROR", "Error checking exif", e);
>>             return 0;
>>         }
>>     }

>>     private static float exifOrientationToDegrees(int exifOrientation) {
>>         if (exifOrientation == ExifInterface.ORIENTATION_ROTATE_90) {
>>             return 90;
>>         } else if (exifOrientation ==
>> ExifInterface.ORIENTATION_ROTATE_180) {
>>             return 180;
>>         } else if (exifOrientation ==
>> ExifInterface.ORIENTATION_ROTATE_270) {
>>             return 270;
>>         }
>>         return 0;
>>     }

>> mucho de este código a sido obtenido de otras fuentes para remediar
>> problemas que me fueron surgiendo. Puede que hayas numerosas chapuzas o
>> barbaridades que puedan ser mejoradas, pero por mi inexperiencia y mi poco
>> conocimiento no se si es así por lo que estoy abierto a cualquier cambio
>> que pueda arreglar o mejorar cosas y de este modo también me serviría para
>> aprender. Gracias

>> El miércoles, 31 de octubre de 2012 17:30:45 UTC+1, juande escribió:

>>> También puede hacer lo que estás haciendo... (aunque sea una barbaridad
>>> guardar la imagen en Base64 en un SharedPreferences...) si a la hora de que
>>> un usuario se registre, guardas la foto reduciéndole el tamaño a uno
>>> considerablemente más pequeño.

>>> On Wednesday, October 31, 2012 5:25:52 PM UTC+1, juande wrote:

>>>> Es que lo que estás haciendo es una barbaridad!!!!!!  !! ! !! !!! ! !
>>>>  !! ! !! O_O!

>>>> El mensaje de error te dice que NO hay memoria para cargar en el "heap"
>>>> algo que ocupa casi 32 Megabytes. Algo normal, ya que la mayoría de
>>>> teléfonos Android tienen un "heap" de 16 Megabytes, así que tu aplicación
>>>> fallará en todos estos teléfono. Toda esta información sobre Bitmaps y los
>>>> problemas de memoria la puedes encontrar aquí:
>>>> http://developer.android.com/**training/displaying-bitmaps/**index.html<http://developer.android.com/training/displaying-bitmaps/index.html>

>>>> ¿No has pensado en guardar la foto "tal cual" en la tarjeta SD, o en
>>>> una base de datos SQLite?

>>>> On Tuesday, October 30, 2012 4:50:37 PM UTC+1, neon2004 wrote:

>>>>> Hola.

>>>>> Tengo una imagen que creo a partir de una url almacenada en una bd.
>>>>> Con este bitmap que creo lo paso a base64 para guardar el string en las
>>>>> preferencias y poder recoger esta preferencia en otra activity donde quiero
>>>>> mostrar la imagen. El problema es que me peta ya que me da problemas de
>>>>> memoria.
>>>>> ¿Cómo puedo solucionarlo?

>>>>> El código que uso es el siguiente:

>>>>> Activity Principal: (Convierto el bitmap y lo guardo en las
>>>>> preferencias)

>>>>> URL url = new URL(urlAvatarl);
>>>>> bmp = BitmapFactory.decodeStream(**url.openConnection().**
>>>>> getInputStream());

>>>>>  ByteArrayOutputStream baos = new ByteArrayOutputStream();
>>>>>  bmp.compress(Bitmap.**CompressFormat.JPEG, 20, baos);
>>>>> byte[] b = baos.toByteArray();

>>>>> encodedImage = Base64.encodeToString(b, Base64.DEFAULT);

>>>>> SharedPreferences prefs = getSharedPreferences("**
>>>>> MisPreferencias",Context.MODE_**PRIVATE);
>>>>> editor.putString(TAG_**URLAVATAR, encodedImage);
>>>>> editor.commit();

>>>>> **** HASTA AQUI TODO CORRECTO *****

>>>>> Activity Secundaria: (Recoge de las preferencias el bitmap almacenado
>>>>> como base64, lo paso a bitmap y lo muestro)

>>>>>  SharedPreferences prefs =   getSharedPreferences("**
>>>>> MisPreferencias",Context.MODE_**PRIVATE);

>>>>> urlAvatar = prefs.getString(TAG_URLAVATAR, "");

>>>>>  if( !urlAvatar.equalsIgnoreCase(""**) ){
>>>>>      byte[] b = Base64.decode(urlAvatar, Base64.DEFAULT);
>>>>>      bmp = BitmapFactory.decodeByteArray(**b, 0, b.length);
>>>>> ////////////*************************************************************** ****
>>>>> EN ESTE PUNTO ES DONDE PETA **************////
>>>>>       btnPerfil.setImageBitmap(bmp);
>>>>> }

>>>>> La traza que me da es esta:

>>>>> 10-30 16:22:14.859: E/dalvikvm-heap(21347): Out of memory on a
>>>>> 31961104-byte allocation.
>>>>> 10-30 16:22:14.859: I/dalvikvm(21347): "AsyncTask #2" prio=5 tid=14
>>>>> RUNNABLE
>>>>> 10-30 16:22:14.859: I/dalvikvm(21347):   | group="main" sCount=0
>>>>> dsCount=0 obj=0x4310b650 self=0x5d2125d8
>>>>> 10-30 16:22:14.859: I/dalvikvm(21347):   | sysTid=22837 nice=10
>>>>> sched=0/0 cgrp=apps/bg_non_interactive handle=1563176096
>>>>> 10-30 16:22:14.859: I/dalvikvm(21347):   | schedstat=( 133824784
>>>>> 45184177 199 ) utm=9 stm=3 core=0
>>>>> 10-30 16:22:14.859: I/dalvikvm(21347):   at android.graphics.**
>>>>> BitmapFactory.**nativeDecodeStream(Native Method)
>>>>> 10-30 16:22:14.864: I/dalvikvm(21347):   at android.graphics.**
>>>>> BitmapFactory.decodeStream(**BitmapFactory.java:650)
>>>>> 10-30 16:22:14.864: I/dalvikvm(21347):   at android.graphics.**
>>>>> BitmapFactory.decodeStream(**BitmapFactory.java:722)
>>>>> 10-30 16:22:14.869: I/dalvikvm(21347):   at com.famovie.Login$**
>>>>> ComprobarInternet$Logearse.**doInBackground(Login.java:287)
>>>>> 10-30 16:22:14.869: I/dalvikvm(21347):   at com.famovie.Login$**
>>>>> ComprobarInternet$Logearse.**doInBackground(Login.java:1)
>>>>> 10-30 16:22:14.879: I/dalvikvm(21347):   at
>>>>> android.os.AsyncTask$2.call(**AsyncTask.java:287)
>>>>> 10-30 16:22:14.969: I/dalvikvm(21347):   at java.util.concurrent.**
>>>>> FutureTask$Sync.innerRun(**FutureTask.java:305)
>>>>> 10-30 16:22:14.969: I/dalvikvm(21347):   at java.util.concurrent.**
>>>>> FutureTask.run(FutureTask.**java:137)
>>>>> 10-30 16:22:14.969: I/dalvikvm(21347):   at android.os.AsyncTask$**
>>>>> SerialExecutor$1.run(**AsyncTask.java:230)
>>>>> 10-30 16:22:14.974: I/dalvikvm(21347):   at java.util.concurrent.**
>>>>> ThreadPoolExecutor.runWorker(**ThreadPoolExecutor.java:1076)
>>>>> 10-30 16:22:14.974: I/dalvikvm(21347):   at java.util.concurrent.**
>>>>> ThreadPoolExecutor$Worker.run(**ThreadPoolExecutor.java:569)
>>>>> 10-30 16:22:14.974: I/dalvikvm(21347):   at
>>>>> java.lang.Thread.run(Thread.**java:856)
>>>>> 10-30 16:22:14.974: D/AbsListView(21347): [**
>>>>> unregisterDoubleTapMotionListe**ner]
>>>>> 10-30 16:22:14.974: D/skia(21347): --- decoder->decode returned false
>>>>> 10-30 16:22:14.979: I/MotionRecognitionManager(**21347):
>>>>> .unregisterListener : / listener count = 0->0, listener=android.widget.
>>>>> **AbsListView$4@42c92868
>>>>> 10-30 16:22:14.989: W/dalvikvm(21347): threadid=14: thread exiting
>>>>> with uncaught exception (group=0x41fc92a0)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347): FATAL EXCEPTION:
>>>>> AsyncTask #2
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):
>>>>> java.lang.RuntimeException: An error occured while executing
>>>>> doInBackground()
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at
>>>>> android.os.AsyncTask$3.done(**AsyncTask.java:299)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at
>>>>> java.util.concurrent.**FutureTask$Sync.**innerSetException(FutureTask.
>>>>> **java:273)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at
>>>>> java.util.concurrent.**FutureTask.setException(**FutureTask.java:124)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at
>>>>> java.util.concurrent.**FutureTask$Sync.innerRun(**FutureTask.java:307)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at
>>>>> java.util.concurrent.**FutureTask.run(FutureTask.**java:137)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at
>>>>> android.os.AsyncTask$**SerialExecutor$1.run(**AsyncTask.java:230)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at
>>>>> java.util.concurrent.**ThreadPoolExecutor.runWorker(**
>>>>> ThreadPoolExecutor.java:1076)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at
>>>>> java.util.concurrent.**ThreadPoolExecutor$Worker.run(**
>>>>> ThreadPoolExecutor.java:569)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at
>>>>> java.lang.Thread.run(Thread.**java:856)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347): Caused by:
>>>>> java.lang.OutOfMemoryError
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at android.graphics.*
>>>>> *BitmapFactory.**nativeDecodeStream(Native Method)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at android.graphics.*
>>>>> *BitmapFactory.decodeStream(**BitmapFactory.java:650)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at android.graphics.*
>>>>> *BitmapFactory.decodeStream(**BitmapFactory.java:722)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at com.famovie.Login$
>>>>> **ComprobarInternet$Logearse.**doInBackground(Login.java:287)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at com.famovie.Login$
>>>>> **ComprobarInternet$Logearse.**doInBackground(Login.java:1)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at
>>>>> android.os.AsyncTask$2.call(**AsyncTask.java:287)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     at
>>>>> java.util.concurrent.**FutureTask$Sync.innerRun(**FutureTask.java:305)
>>>>> 10-30 16:22:14.999: E/AndroidRuntime(21347):     ... 5 more
>>>>> 10-30 16:22:25.724: E/WindowManager(21347): Activity com.famovie.Login
>>>>> has leaked window com.android.internal.policy.**
>>>>> impl.PhoneWindow$DecorView@**42faaab0 that was originally added here
>>>>> 10-30 16:22:25.724: E/WindowManager(21347): android.view.WindowLeaked:
>>>>> Activity com.famovie.Login has leaked window com.android.internal.policy.
>>>>> **impl.PhoneWindow$DecorView@**42faaab0 that was originally added here
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> android.view.ViewRootImpl.<**init>(ViewRootImpl.java:402)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at android.view.**
>>>>> WindowManagerImpl.addView(**WindowManagerImpl.java:311)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at android.view.**
>>>>> WindowManagerImpl.addView(**WindowManagerImpl.java:224)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at android.view.**
>>>>> WindowManagerImpl$**CompatModeWrapper.addView(**
>>>>> WindowManagerImpl.java:149)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at android.view.Window$
>>>>> **LocalWindowManager.addView(**Window.java:558)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> android.app.Dialog.show(**Dialog.java:277)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at com.famovie.Login$*
>>>>> *ComprobarInternet$Logearse.**onPreExecute(Login.java:255)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> android.os.AsyncTask.**executeOnExecutor(AsyncTask.**java:586)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> android.os.AsyncTask.execute(**AsyncTask.java:534)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at com.famovie.Login$*
>>>>> *ComprobarInternet.**onPostExecute(Login.java:229)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at com.famovie.Login$*
>>>>> *ComprobarInternet.**onPostExecute(Login.java:1)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> android.os.AsyncTask.finish(**AsyncTask.java:631)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> android.os.AsyncTask.access$**600(AsyncTask.java:177)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> android.os.AsyncTask$**InternalHandler.handleMessage(**
>>>>> AsyncTask.java:644)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at android.os.Handler.
>>>>> **dispatchMessage(Handler.java:**99)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> android.os.Looper.loop(Looper.**java:137)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> android.app.ActivityThread.**main(ActivityThread.java:4898)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> java.lang.reflect.Method.**invokeNative(Native Method)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> java.lang.reflect.Method.**invoke(Method.java:511)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> com.android.internal.os.**ZygoteInit$**MethodAndArgsCaller.run(**
>>>>> ZygoteInit.java:1006)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> com.android.internal.os.**ZygoteInit.main(ZygoteInit.**java:773)
>>>>> 10-30 16:22:25.724: E/WindowManager(21347):     at
>>>>> dalvik.system.NativeStart.**main(Native Method)

>>>>> Esta imagen es subida por un usuario al hacer el registro.

>>>>> La primera ve que se logea me peta tal como indico, pero el proceso de
>>>>> logueado se ha realizado, aunque no ha mostrado la siguiente activity, y lo
>>>>> almaceno para que la siguiente vez que entre, si se ha logeado
>>>>> anteriormente no tenga que volver  hacerlo. Pues esta segunda vez que ya
>>>>> esta almacenada el bitmap en las preferencias y no conecta con el
>>>>> webservice para recoger los datos, si que me carga bien la activity con la
>>>>> imagen.

>>>>> Este mismo problema de memoria me ocurre a veces cuando el usuario
>>>>> hace el registro.

>>>>> En este momento le doy la opción de elegir una foto de la galería y
>>>>> hay veces que me peta mostrando este error de OutOfMemoryError. El caso es
>>>>> que me pasa con imagenes que unas veces selecciona y peta y otras las
>>>>> seleccionas y muestro en un ImageButton sin problema alguno.

>>>>> Por último tengo una duda con respecto a las imágenes y es que algunas
>>>>> de ellas, hasta ahora solo me ocurre con una ya que tampoco he probado con
>>>>> muchas imágenes diferentes,
>>>>> resulta que me sale girada y no entiendo porque.

>>>>> Espero que podáis ayudarme.

>>>>> Gracias

>>>>>  --
>> Para participar es necesario que leas detenidamente las normas del grupo:
>> http://goo.gl/AmNsS
>> ---
>> Has recibido este mensaje porque estás suscrito al grupo
>> "desarrolladores-android" de Grupos de Google.
>> Para publicar una entrada en este grupo, envía un correo electrónico a
>> desarrolladores-android@googlegroups.com.
>> Para anular tu suscripción a este grupo, envía un correo electrónico a
>> desarrolladores-android+unsubscribe@googlegroups.com
>>  Para ver este debate en la Web, visita
>> https://groups.google.com/d/msg/desarrolladores-android/-/VMH17A0_xf4J.

> --
> Un saludo,

> Jc Miñarro

> --------------------------------------------------------------------------- ----------------
> CarteleraApp<https://market.android.com/details?id=com.jcminarro.android.tools> -
> Consulta la cartelera y estrenos de los cines españoles.

>  --
> Para participar es necesario que leas detenidamente las normas del grupo:
> http://goo.gl/AmNsS
> ---
> Has recibido este mensaje porque estás suscrito al grupo
> "desarrolladores-android" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a
> desarrolladores-android@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a
> desarrolladores-android+unsubscribe@googlegroups.com


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.