Как да прикача цялото растерно изображение към ImageView?

Опитах се да получа растерно изображение, прикачено към ImageView, използвайки ImageView.getDrawingCache(); Но открих, че върнатото растерно изображение не е същото, което бих искал да получа от ImageView. Винаги беше по-малък от реалния образ.

Знаех, че методът getDrawingCache() не трябва да има изгледа, ако е по-голям от екрана, тъй като видимата част от изгледа е само изчертана и кешът съдържа само това, което е изчертано.

Мога ли да прикача цялото растерно изображение към ImageView?


person ctsu    schedule 16.03.2012    source източник


Отговори (3)


Ако просто искате Bitmap от ImageView, следният код може да ви свърши работа:-

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

Мисля, че това искаше.

person noob    schedule 16.03.2012
comment
Винаги получавам NPE: Опит за извикване на виртуален метод „android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()“. - person josher932; 01.10.2016
comment
понякога getDrawable може да върне някакъв друг обект ..може да завършите с изключение за предаване на обект. - person Ravi; 01.10.2016
comment
@ josher932 Може да искате да проверите отговора на mipreamble за това. Въпреки това бих ви препоръчал да проверите защо получавате указател Null, защото това не е нормално. - person noob; 01.10.2016
comment
@Ravi Очевидно ще върне Drawable, но може да не е обект от клас BitmapDrawable. Затова ще трябва да проверите какъв вид Drawable получавате. отговорът на mipremmble е много по-добър в това отношение. - person noob; 01.10.2016

Ако вашият drawble не винаги е екземпляр на BitmapDrawable

Забележка: ImageView трябва да бъде зададен преди да направите това.

Bitmap bitmap;
if (mImageView.getDrawable() instanceof BitmapDrawable) {
    bitmap = ((BitmapDrawable) mImageView.getDrawable()).getBitmap();
} else {
    Drawable d = mImageView.getDrawable();
    bitmap = Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    d.draw(canvas);
}

Вашето растерно изображение се съхранява в растерно изображение.

Ето!

person mipreamble    schedule 17.09.2013

Най-лесният начин е да зададете етикет в ImageView.

imageView.setImageBitmap(bitmap);
imageView.setTag(bitmap); 

За да получите Tag от него

imageView.getTag();
person Ravi    schedule 01.10.2016