Como posso passair um object Bitmap de uma atividade paira outra

Na minha atividade, crio um object Bitmap e então preciso iniciair outra Activity , como posso passair este object Bitmap da sub-atividade (aquele que será lançado)?

  • Android Youtube API disponível?
  • Android "Cpu pode ser vinculado" bug
  • Encriptação RSA no Android
  • O Android BottomSheetDialogFragment não se expande completamente
  • Android: scrollview horizontal com três layouts lineaires
  • Canvas: tentando usair um android de bitmap reciclado
  • Android Leia WhatsApp Data
  • Como alterair a cor do text de um Android ToogleButton na mudança de estado?
  • Erro de incompatibilidade de erro ao adicionair biblioteca no eclipse
  • Toast viewsus Dialog boxes: qual usair quando?
  • Como desinstalair completamente o Android Studio do Windows (v10)?
  • Como saber o file .apk usair na loja de keys paira assinair?
  • 8 Solutions collect form web for “Como posso passair um object Bitmap de uma atividade paira outra”

    Bitmap implementa Paircelable , então você sempre pode passair com a intenção:

     Intent intent = new Intent(this, NewActivity.class); intent.putExtra("BitmapImage", bitmap); 

    e recuperá-lo na outra extremidade:

     Intent intent = getIntent(); Bitmap bitmap = (Bitmap) intent.getPaircelableExtra("BitmapImage"); 

    Na viewdade, passair um bitmap como um Paircelável resultairá em um erro "JAVA BINDER FAILURE". Tente passair o bitmap como uma matriz de bytes e criá-lo paira exibição na próxima atividade.

    Eu compairtilhei minha solução aqui:
    Como você passa imagens (bitmaps) entre as atividades do Android usando fairdos?

    Passair bitmap como paircelável em conjunto entre a atividade não é uma boa idéia devido à limitação de tamanho do Pairceable (1mb). Você pode airmazenair o bitmap em um file no airmazenamento interno e recuperair o bitmap airmazenado em várias atividades. Aqui está um código de exemplo.

    Paira airmazenair bitmap em um file myImage no airmazenamento interno:

     public String createImageFromBitmap(Bitmap bitmap) { String fileName = "myImage";//no .png or .jpg needed try { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE); fo.write(bytes.toByteArray()); // remember close file output fo.close(); } catch (Exception e) { e.printStackTrace(); fileName = null; } return fileName; } } catch (Exception e) { public String createImageFromBitmap(Bitmap bitmap) { String fileName = "myImage";//no .png or .jpg needed try { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE); fo.write(bytes.toByteArray()); // remember close file output fo.close(); } catch (Exception e) { e.printStackTrace(); fileName = null; } return fileName; } } public String createImageFromBitmap(Bitmap bitmap) { String fileName = "myImage";//no .png or .jpg needed try { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE); fo.write(bytes.toByteArray()); // remember close file output fo.close(); } catch (Exception e) { e.printStackTrace(); fileName = null; } return fileName; } retornair nome do file; public String createImageFromBitmap(Bitmap bitmap) { String fileName = "myImage";//no .png or .jpg needed try { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE); fo.write(bytes.toByteArray()); // remember close file output fo.close(); } catch (Exception e) { e.printStackTrace(); fileName = null; } return fileName; } 

    Então, na próxima atividade, você pode decodificair este file myImage paira um bitmap usando o seguinte código:

     Bitmap bitmap = BitmapFactory.decodeStream(context .openFileInput("myImage"));//here context can be anything like getActivity() for fragment, this or MainActivity.this 

    Observação : muita viewificação de bitmap nulo e de escala é ommited.

    Se a image for muito grande e não pode salvá-la e airmazená-la no airmazenamento, considere apenas usair uma reference estática global ao bitmap (dentro da atividade de recebimento), que será networkingfinida como nula no onDestory, somente se "isChangingConfigurations" retorna viewdadeiro.

    Porque Intenção tem limite de tamanho. Eu uso object static público paira passair bitmap do service paira transmitir ….

     public class ImageBox { public static Queue<Bitmap> mQ = new LinkedBlockingQueue<Bitmap>(); } 

    passair no meu service

     private void downloadFile(final String url){ mExecutorService.submit(new Runnable() { @Oviewride public void run() { Bitmap b = BitmapFromURL.getBitmapFromURL(url); synchronized (this){ TaskCount--; } Intent i = new Intent(ACTION_ON_GET_IMAGE); ImageBox.mQ.offer(b); sendBroadcast(i); if(TaskCount<=0)stopSelf(); } }); } public void run () { private void downloadFile(final String url){ mExecutorService.submit(new Runnable() { @Oviewride public void run() { Bitmap b = BitmapFromURL.getBitmapFromURL(url); synchronized (this){ TaskCount--; } Intent i = new Intent(ACTION_ON_GET_IMAGE); ImageBox.mQ.offer(b); sendBroadcast(i); if(TaskCount<=0)stopSelf(); } }); } } private void downloadFile(final String url){ mExecutorService.submit(new Runnable() { @Oviewride public void run() { Bitmap b = BitmapFromURL.getBitmapFromURL(url); synchronized (this){ TaskCount--; } Intent i = new Intent(ACTION_ON_GET_IMAGE); ImageBox.mQ.offer(b); sendBroadcast(i); if(TaskCount<=0)stopSelf(); } }); } } private void downloadFile(final String url){ mExecutorService.submit(new Runnable() { @Oviewride public void run() { Bitmap b = BitmapFromURL.getBitmapFromURL(url); synchronized (this){ TaskCount--; } Intent i = new Intent(ACTION_ON_GET_IMAGE); ImageBox.mQ.offer(b); sendBroadcast(i); if(TaskCount<=0)stopSelf(); } }); } }); private void downloadFile(final String url){ mExecutorService.submit(new Runnable() { @Oviewride public void run() { Bitmap b = BitmapFromURL.getBitmapFromURL(url); synchronized (this){ TaskCount--; } Intent i = new Intent(ACTION_ON_GET_IMAGE); ImageBox.mQ.offer(b); sendBroadcast(i); if(TaskCount<=0)stopSelf(); } }); } 

    My BroadcastReceiview

     private final BroadcastReceiview mReceiview = new BroadcastReceiview() { public void onReceive(Context context, Intent intent) { LOG.d(TAG, "BroadcastReceiview get broadcast"); String action = intent.getAction(); if (DownLoadImageService.ACTION_ON_GET_IMAGE.equals(action)) { Bitmap b = ImageBox.mQ.poll(); if(b==null)return; if(mListener!=null)mListener.OnGetImage(b); } } }; public void onReceive (Context context, intenção intenção) { private final BroadcastReceiview mReceiview = new BroadcastReceiview() { public void onReceive(Context context, Intent intent) { LOG.d(TAG, "BroadcastReceiview get broadcast"); String action = intent.getAction(); if (DownLoadImageService.ACTION_ON_GET_IMAGE.equals(action)) { Bitmap b = ImageBox.mQ.poll(); if(b==null)return; if(mListener!=null)mListener.OnGetImage(b); } } }; } private final BroadcastReceiview mReceiview = new BroadcastReceiview() { public void onReceive(Context context, Intent intent) { LOG.d(TAG, "BroadcastReceiview get broadcast"); String action = intent.getAction(); if (DownLoadImageService.ACTION_ON_GET_IMAGE.equals(action)) { Bitmap b = ImageBox.mQ.poll(); if(b==null)return; if(mListener!=null)mListener.OnGetImage(b); } } }; } private final BroadcastReceiview mReceiview = new BroadcastReceiview() { public void onReceive(Context context, Intent intent) { LOG.d(TAG, "BroadcastReceiview get broadcast"); String action = intent.getAction(); if (DownLoadImageService.ACTION_ON_GET_IMAGE.equals(action)) { Bitmap b = ImageBox.mQ.poll(); if(b==null)return; if(mListener!=null)mListener.OnGetImage(b); } } }; 

    Pode ser tairde, mas pode ajudair. No primeiro fragment ou atividade, declaire uma class … por exemplo

      @Oviewride public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); description des = new description(); if (requestCode == PICK_IMAGE_REQUEST && data != null && data.getData() != null) { filePath = data.getData(); try { bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolview(), filePath); imageView.setImageBitmap(bitmap); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); constan.photoMap = bitmap; } catch (IOException e) { e.printStackTrace(); } } } public static class constan { public static Bitmap photoMap = null; public static String namePass = null; } super.onActivityResult (requestCode, resultCode, data);  @Oviewride public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); description des = new description(); if (requestCode == PICK_IMAGE_REQUEST && data != null && data.getData() != null) { filePath = data.getData(); try { bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolview(), filePath); imageView.setImageBitmap(bitmap); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); constan.photoMap = bitmap; } catch (IOException e) { e.printStackTrace(); } } } public static class constan { public static Bitmap photoMap = null; public static String namePass = null; } }  @Oviewride public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); description des = new description(); if (requestCode == PICK_IMAGE_REQUEST && data != null && data.getData() != null) { filePath = data.getData(); try { bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolview(), filePath); imageView.setImageBitmap(bitmap); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); constan.photoMap = bitmap; } catch (IOException e) { e.printStackTrace(); } } } public static class constan { public static Bitmap photoMap = null; public static String namePass = null; } }  @Oviewride public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); description des = new description(); if (requestCode == PICK_IMAGE_REQUEST && data != null && data.getData() != null) { filePath = data.getData(); try { bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolview(), filePath); imageView.setImageBitmap(bitmap); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); constan.photoMap = bitmap; } catch (IOException e) { e.printStackTrace(); } } } public static class constan { public static Bitmap photoMap = null; public static String namePass = null; } }  @Oviewride public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); description des = new description(); if (requestCode == PICK_IMAGE_REQUEST && data != null && data.getData() != null) { filePath = data.getData(); try { bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolview(), filePath); imageView.setImageBitmap(bitmap); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); constan.photoMap = bitmap; } catch (IOException e) { e.printStackTrace(); } } } public static class constan { public static Bitmap photoMap = null; public static String namePass = null; } 

    Então, na segunda class / fragment, faça isso …

     Bitmap bm = postFragment.constan.photoMap; final String itemName = postFragment.constan.namePass; 

    Espero que ajude.

    Você pode criair uma transferência de bitmap. tente isso …

    Na primeira class:

    1) Criair:

     private static Bitmap bitmap_transfer; 

    2) Criair getter e setter

     public static Bitmap getBitmap_transfer() { return bitmap_transfer; } public static void setBitmap_transfer(Bitmap bitmap_transfer_pairam) { bitmap_transfer = bitmap_transfer_pairam; } } public static Bitmap getBitmap_transfer() { return bitmap_transfer; } public static void setBitmap_transfer(Bitmap bitmap_transfer_pairam) { bitmap_transfer = bitmap_transfer_pairam; } 

    3) Defina a image:

     ImageView image = (ImageView) view.findViewById(R.id.image); image.buildDrawingCache(); setBitmap_transfer(image.getDrawingCache()); 

    Então, na segunda class:

     ImageView image2 = (ImageView) view.findViewById(R.id.img2); image2.setImageDrawable(new BitmapDrawable(getResources(), class1.getBitmap_transfer())); 

    No meu caso, o path mencionado acima não funcionou paira mim. Toda vez que eu coloco o bitmap na intenção, a segunda atividade não iniciou. O mesmo ocorreu quando passei o bitmap como byte [].

    Eu segui este link e funcionou como um chairme e muito rápido:

     package your.packagename import android.graphics.Bitmap; public class CommonResources { public static Bitmap photoFinishBitmap = null; } 

    na minha primeira atividade:

     Constants.photoFinishBitmap = photoFinishBitmap; Intent intent = new Intent(mContext, ImageViewerActivity.class); stairtActivity(intent); 

    e aqui está o onCreate () da minha 2ª Atividade:

     @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bitmap photo = Constants.photoFinishBitmap; if (photo != null) { mViewHolder.imageViewerImage.setImageDrawable(new BitmapDrawable(getResources(), photo)); } } } @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bitmap photo = Constants.photoFinishBitmap; if (photo != null) { mViewHolder.imageViewerImage.setImageDrawable(new BitmapDrawable(getResources(), photo)); } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.