Получение изображения из ImageView - PullRequest
23 голосов
/ 28 января 2012

У меня есть галерея, которая показывает массив изображений, при нажатии они отображаются в виде изображения. Я хочу иметь возможность поделиться изображением, которое в данный момент отображается в средстве выбора намерений. Я не могу понять, как выбрать текущее изображение.

Код галереи:

public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView = new ImageView(mContext);

        imageView.setImageResource(mImageIds[position]);
        imageView.setLayoutParams(new Gallery.LayoutParams(150, 120));
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        imageView.setBackgroundResource(mGalleryItemBackground);

        return imageView;
    }

Код выбора объекта:

Intent share = new Intent(Intent.ACTION_SEND);
            share.setType("image/png");

            share.putExtra(Intent.EXTRA_STREAM,
                    Uri.parse("android.resource://com.appinfluence.fanapp.v1/drawable/" + Integer.toString(R.drawable.alright)));

            startActivity(Intent.createChooser(share, "Share Image"));

Там, где написано R.drawable.alright, мне нужно, чтобы это как-то было переменной текущего изображения. Есть идеи?

Ответы [ 3 ]

63 голосов
/ 28 января 2012

Чтобы извлечь текущий выбранный вид, используйте

Gallery.getSelectedView(); 

, а для получения Drawable из imageView используйте:

ImageVIew.getDrawable()

Если вы хотите получить входной поток из рисованного объекта, используйте следующее:

BitmapDrawable bitmapDrawable = ((BitmapDrawable) drawable);
Bitmap bitmap = bitmapDrawable .getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] imageInByte = stream.toByteArray();
ByteArrayInputStream bis = new ByteArrayInputStream(imageInByte);
3 голосов
/ 15 октября 2015
    l.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            TextView textView=(TextView)view.findViewById(R.id.textView);
            ImageView imageView=(ImageView)view.findViewById(R.id.imageView);
            String textViewString=textView.getText().toString();
            Bitmap image=((BitmapDrawable)imageView.getDrawable()).getBitmap();

            DialogClass dialogClass=new DialogClass(MainActivity.this,image,textViewString);
            dialogClass.show();
        }
    });
0 голосов
/ 20 декабря 2017

Моя лучшая функция

public class MainActivity extends Activity {

    private ImageView imgView,bitmap;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imgView=(ImageView) findViewById(R.id.imgView);
        bitmap=(ImageView) findViewById(R.id.bitmap);

        //set view to bitmap image
        bitmap.setImageBitmap(convertImageViewToBitmap(imgView));
    }

    //function to convert imageView to Bitmap

    private Bitmap convertImageViewToBitmap(ImageView v){

        Bitmap bm=((BitmapDrawable)v.getDrawable()).getBitmap();

        return bm;
    }

}
...