বিটম্যাপটি ইমেজভিউতে সংযুক্ত করুন


314

প্রদত্ত

ImageView image = R.findViewById(R.id.imageView);
image.setImageBitmap(someBitmap);

বিটম্যাপটি পুনরুদ্ধার করা সম্ভব?


1
হ্যাঁ এটি সম্ভব, আপনি যখন ছবিটিতে ক্লিক করেন আমরা তা পেয়ে যাব যদি আপনি এই প্রয়োজনীয়তাটি চান তবে আমাকে জানান।
রাজা রেডি পোলাম রেডি

উত্তর:


809
Bitmap bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();

34
আপনার image.getDrawable()আসলে BitmapDrawable(এড়ানোর জন্য IllegalCastExceptions) কাস্ট করা যেতে পারে কিনা তা পরীক্ষা করে যত্নবান হন । উদাহরণস্বরূপ, আপনি যদি নিজের ছবিতে স্তরগুলি ব্যবহার করেন তবে এই স্নিপেটটি কিছুটা আলাদা হবে:Bitmap bitmap = ((BitmapDrawable)((LayerDrawable)image.getDrawable()).getDrawable(0)).getBitmap();
অ্যালেক্স সেমেনিয়ুক

2
এটি, মাঝে মধ্যে কিছু বা সমস্ত কালো পিক্সেল সহ একটি বিটম্যাপ ফিরে আসবে।

2
আপনি অঙ্কনযোগ্য / চিত্র প্রদর্শনের জন্য আবেদন করা থাকলে এটি আসল বিটম্যাপ বা ফিল্টার করা বিটম্যাপটি ফিরিয়ে আনবে না।
প্রিয়ধ্রুভ

4
চিত্রটি যদি ImageViewসেট করা থাকে তবে এটি কি কাজ করবে URI? imageView.setImageUri()
হেন্দ্র অ্যাংগ্রিয়ান

1
@ প্রানীথকুমার এটি আমার দৃশ্যে কাজ করে। এই দুর্দান্ত উত্তরটির জন্য থাম্বস আপ!
হেন্দ্র অ্যাংগ্রিয়ান

46

এটি আপনাকে একটি Bitmapথেকে পাবেন ImageView। যদিও এটি আপনার সেট করা বিটম্যাপের একই জিনিস নয়। এটি একটি নতুন।

imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();

=== সম্পাদনা ===

 imageView.setDrawingCacheEnabled(true);
 imageView.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), 
                   MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
 imageView.layout(0, 0, 
                  imageView.getMeasuredWidth(), imageView.getMeasuredHeight()); 
 imageView.buildDrawingCache(true);
 Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache());
 imageView.setDrawingCacheEnabled(false);

যখন এটি "কাজ করে না", তখন কী ঘটে? এটি নাল ফিরে বা ব্যতিক্রম নিক্ষেপ বা কি?
সরোয়ার এরফান

2
এটি শূন্য ফিরে। কখনও কখনও পৃষ্ঠাটি এটি প্রদর্শিত হওয়ার জন্য আমাকে পুনরায় লোড করতে হয়।
লেবু

3
আমাকে একটি নাল পয়েন্টার দেয়। :( এই লাইনে:Bitmap bmap = Bitmap.createBitmap(mImageView.getDrawingCache());
Azurespot

অঙ্কনক্যাচি কোটলিনে অবহিত করা হয়েছে
রাজু আপনার পেপ

3

কোড নীচে লিখুন

ImageView yourImageView = (ImageView) findViewById(R.id.yourImageView);
Bitmap bitmap = ((BitmapDrawable)yourImageView.getDrawable()).getBitmap();

আমি পেয়েছি অ্যাপকম্প্যাটআইজেজভিউটি এন্ড্রয়েড.গ্রাফিক্স.ড্রেবলযোগ্য.বিটম্যাপড্রেইবল
বিলিজোকার

1

কে খুঁজছে তাদের জন্য Kotlinপেতে সমাধান Bitmapথেকে ImageView

var bitmap = (image.drawable as BitmapDrawable).bitmap

আমি পেয়েছি অ্যাপকম্প্যাটআইজেজভিউটি এন্ড্রয়েড.গ্রাফিক্স.ড্রেবলযোগ্য.বিটম্যাপড্রেইবল
বিলিজোকার

0

এই কোডটি আরও ভাল।

public static  byte[] getByteArrayFromImageView(ImageView imageView)
    {
        BitmapDrawable bitmapDrawable = ((BitmapDrawable) imageView.getDrawable());
        Bitmap bitmap;
        if(bitmapDrawable==null){
            imageView.buildDrawingCache();
            bitmap = imageView.getDrawingCache();
            imageView.buildDrawingCache(false);
        }else
        {
            bitmap = bitmapDrawable .getBitmap();
        }
        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        return stream.toByteArray();
    }

এটি কি ইমেজভিউ.জেটড্রেইবল (); -> মানে ছবি আঁকার ফোল্ডার থেকে পাওয়া? সিএমআইআইডাব্লু .... @ আহমাদ
গুমুরুহ

না, আপনি এই কোডটি ব্যবহার করতে পারেন। Bitmap imagenAndroid = BitmapFactory.decodeResource(getResources(),R.drawable.jellybean_statue);
আহমদ আগজাদেহে


-10

এই কোড চেষ্টা করুন:

Bitmap bitmap;
bitmap = ((BitmapDrawable)image.getDrawable()).getBitmap();

6
আপনি কি আরস্লানের গৃহীত উত্তরের উপর বর্ধন বর্ণনা করতে পারবেন?
বমি

আপনার উত্তর কেন তার সমস্যার সমাধান করে তা আপনি আরও ভালভাবে ব্যাখ্যা করতে চাইবেন
মুহাম্মদ রেফায়াত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.