2017-01-23 2 views
0

Это мой код. Я хочу добавить еще одну кнопку, в которой onclick отправит изображение в следующую активность, но я не могу это настроить. Как я должен это делать?Android || Как анализировать изображение из одной активности в другую?

public class MainActivity extends Activity { 
private static int RESULT_LOAD_IMG = 1; 
String imgDecodableString; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

public void loadImagefromGallery(View view) { 
    // Create intent to Open Image applications like Gallery, Google Photos 
    Intent galleryIntent = new Intent(Intent.ACTION_PICK, 
      android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    // Start the Intent 
    startActivityForResult(galleryIntent, RESULT_LOAD_IMG); 
} 



@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    try { 
     // When an Image is picked 
     if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK 
       && null != data) { 
      // Get the Image from data 

      Uri selectedImage = data.getData(); 
      String[] filePathColumn = { MediaStore.Images.Media.DATA }; 

      // Get the cursor 
      Cursor cursor = getContentResolver().query(selectedImage, 
        filePathColumn, null, null, null); 
      // Move to first row 
      cursor.moveToFirst(); 

      int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
      imgDecodableString = cursor.getString(columnIndex); 
      cursor.close(); 
      ImageView imgView = (ImageView) findViewById(R.id.imgView); 
      // Set the Image in ImageView after decoding the String 
      imgView.setImageBitmap(BitmapFactory 
        .decodeFile(imgDecodableString)); 

     } else { 
      Toast.makeText(this, "You haven't picked Image", 
        Toast.LENGTH_LONG).show(); 
     } 
    } catch (Exception e) { 
     Toast.makeText(this, "Something went wrong", Toast.LENGTH_LONG) 
       .show(); 
    } 

} 
+3

Передайте имя файла следующему действию. –

+1

Вы уже строку, содержащую изображение, просто отправить его с помощью намерения дополнительные – faruk

+0

я пишу код для отправки с помощью намерения экстремума, но как получить его в следующей деятельности общественной ничтожной nextActivity (View зрения) { Намерение Намерение = новый Intent (это, DisplayActivity.class); intent.putExtra ("bmp_image", imgDecodableString); startActivity (намерение); } –

ответ

0

Первоначально держать вновь добавленные ОТКЛЮЧИТЬ и onActivityResult метода после получения строки изображения кнопки включения и установите onClickListener на кнопку. И передайте эту строку изображения в следующую активность, используя дополнительные намерения.

onActivityResult В методе

newButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       startActivity(new Intent(getApplicationContext(),NextActivity.class).putExtra("img",imgDecodableString)); 
      } 
     }); 
+0

Я реализовал код ур ...... и перехожу к следующему действию и получаю пустую страницу там .... и в logcat я получаю это ...... ** Ключ img ожидаемый Положительный, но значение было java.lang .String.Значение по умолчанию было возвращено. W/Bundle: попытка сгенерировать генерируемое внутреннее исключение: ** –

+0

как вы получаете строку в следующем действии, какой код вы написали в следующем действии? –

+0

это код следующей активации ---------------------------------> _ protected void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); Bitmap imgDecodeableString = (Bitmap) this.getIntent(). GetParcelableExtra ("img"); setContentView (R.layout.activity_display); ImageView imgView = (ImageView) findViewById (R.id.imageView); imgView.setImageBitmap (imgDecodeableString); }} –

0

вы можете поместить данные в первой деятельности как

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

и второй активности анализировать данные, как показано ниже:

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

конвертировать ImagePath в растровом код отрезала является:

BitmapFactory.Options options = new BitmapFactory.Options(); 
     options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
     Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options); 
+0

если вы не понимаете должным образом решение. не давайте посвятить. умывка может иметь только примитивный тип данных от одного действия к другому, если вы хотите поместить данные для изображения, которое вы должны преобразовать в его растровое изображение, и проанализировать его выше, если вы не заинтересованы его не посвящать. Спасибо !! –

+0

i havent посвятите его –

+0

все в порядке, но вам нужно обойти его. если у вас небольшой размер изображения, он будет работать. –

0

Лучший способ сделать это с большим изображением - использовать Serializable, так как Intent и Parcelable имеют ограничение по размеру.

Ответы на этот вопрос могут помочь: Serializing and De-Serializing android.graphics.Bitmap in Java

0

// Первая активность

Bitmap b = null; 
String bitmapString = getStringFromBitmap(b); 
Intent intent = new Intent(this, MainActivity.class); 
intent.putExtra("bitmapString", bitmapString); 

// Вторая активность

String receivedBitmapString = getIntent().getStringExtra("bitmapString"); 
     Bitmap receivedBitmap = getBitmapFromString(receivedBitmapString); 

// Функции

private String getStringFromBitmap(Bitmap bitmapPicture) { 
    /* 
    * This functions converts Bitmap picture to a string which can be 
    * JSONified. 
    * */ 
    final int COMPRESSION_QUALITY = 100; 
    String encodedImage; 
    ByteArrayOutputStream byteArrayBitmapStream = new ByteArrayOutputStream(); 
    bitmapPicture.compress(Bitmap.CompressFormat.PNG, COMPRESSION_QUALITY, 
    byteArrayBitmapStream); 
    byte[] b = byteArrayBitmapStream.toByteArray(); 
    encodedImage = Base64.encodeToString(b, Base64.DEFAULT); 
    return encodedImage; 
    } 


    private Bitmap getBitmapFromString(String jsonString) { 
    /* 
    * This Function converts the String back to Bitmap 
    * */ 
    byte[] decodedString = Base64.decode(stringPicture, Base64.DEFAULT); 
    Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length); 
    return decodedByte; 
    } 

Link

Смежные вопросы