2012-10-12 6 views
5

Mam podgląd obrazu w widoku listy w pierwszym działaniu, Chcę wysłać moje zdjęcie do drugiej czynności na clicl elementu listview.Jak wysłać zdjęcie z jednej aktywności do innej

Próbowałem następujących Code

Konwersja rozciągliwej obrazu do ByteArray: -

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 
       ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
       bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
       byte[] byteArray = stream.toByteArray(); 

Wysyłanie przez intent

Intent intent=new Intent(PicturesList.this,PictureDetail.class); 
       intent.putExtra("Bitmap", byteArray); 
       startActivity(intent); 

W drugim zadaniowego

Bundle extras = getIntent().getExtras(); 
     byteArray = extras.getByteArray("Bitmap"); 

i

Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
         imageview.setImageBitmap(bmp); 

Ale problem jest tutaj-

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 

to wymagać rozciągliwej obraz i mam ImageView, mogę przekonwertować moje ImageView do rozciągliwej? czy cokolwiek innego? Jak wysłać imageview zamiast drawable. Ktoś już to zrobił.

ten sposób ustawić obraz w ImageView

new AsyncTask<Void,Void,Void>() { 
      @Override 
      protected Void doInBackground(Void... params) { 


       try { 
        URL newurl = new URL("http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png"); 
        bitmap= BitmapFactory.decodeStream(newurl.openConnection().getInputStream()); 
        //bitmap = Bitmap.createScaledBitmap(bitmap, 50,50, true); 
       } 
       catch (MalformedURLException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      // bitmap=imageLoader.DisplayImage("http://farm3.static.flickr.com/2199/2218403922_062bc3bcf2.jpg", imageview); 
       //bitmap = Bitmap.createScaledBitmap(bitmap, imageview.getWidth(), imageview.getHeight(), true); 
       return null; 
      } 
      @Override 
      protected void onPostExecute(Void result) { 
       super.onPostExecute(result); 
       imageview.setImageBitmap(bitmap); 
      } 
     }.execute(); 
+0

Jak ustawić obraz do ImageView w pierwszej kolejności? To zależy dużo na tym faktycznie. –

+0

Ustawiłem obraz na obrazie używając adresu URL. onclick go chcę wyświetlić go w drugim działaniu. – Ani

+0

Tak, w porządku. Ale moje pytanie w jakiej formie przechowujesz obraz z adresu URL. Powinieneś był użyć drawable, prawda? –

Odpowiedz

4

Nie należy przekonwertować bitmapę do tablicy bajtów. Bitmapa jest paczkowana, więc możesz po prostu użyć putParcelable(String, Parcelable), aby dodać ją do Pakietu.

Edit:

Na przykład:

Bundle extras = new Bundle(); 
extras.putParcelable("Bitmap", bmp); 
intent.putExtras(extras); 
startActivity(intent); 

następnie w drugim działalności:

Bundle extras = getIntent().getExtras(); 
Bitmap bmp = (Bitmap) extras.getParcelable("Bitmap"); 
+0

można ułożyć na ten temat. Dodatkowe dodatki = nowa paczka(); \t \t \t extras.putParcelable ("Bitmap", bitmapa); czy to pisze? – Ani

+0

Tak, zgadza się. Edytowałem swoją odpowiedź. – Magicode

+0

ile danych możemy przesłać w drodze zamiaru. Czy obraz o dużym rozmiarze może stwarzać dla mnie problem? – Ani

0

I rzeczą, którą przechodzą obrazu ID i identyfikacyjnego w następnym działaniem ImageView Np

GEt ID ((ImageView) v).getId(); 
SET ID imageView.setImageResource(imgId); 
+0

Ustawiłem ten obraz na widok obrazu. Czy oznacza to, że powinienem wysłać id obrazu do następnej aktywności poprzez intencję. – Ani

+0

yes, pass image getID i ustaw inne działanie – ckpatel

0

można zamienić ImageView Aby Bitmap.Try ten

Bitmap bitmap = Bitmap.createBitmap(imageView .getMeasuredWidth(),imageView .getMeasuredHeight(), Bitmap.Config.RGB_565); 
Canvas canvas = new Canvas(bitmap); 
ImageView .draw(canvas); 
+0

daje to wyjątek wskaźnika null do mnie. – Ani

+0

Sprawdź edytowany kod. –

+0

nadal otrzymuję ten sam wyjątek wskaźnik zerowy – Ani