android - बाइट करने योग्य




database drawable (4)

मैं एक छवि में वेब से एक ImageView । यह बहुत छोटा है (एक फ़ेविकॉन) और मैं इसे अपने SQLite डेटाबेस में संग्रहीत करना चाहूंगा। मुझे mImageView.getDrawable() से mImageView.getDrawable() मिल सकता है, लेकिन फिर मुझे नहीं पता कि आगे क्या करना है। मैं पूरी तरह से Android में Drawable वर्ग को नहीं समझता।

मुझे पता है कि मैं एक Bitmap से बाइट सरणी प्राप्त कर सकता हूं:

Bitmap defaultIcon = BitmapFactory.decodeStream(in);

ByteArrayOutputStream stream = new ByteArrayOutputStream();
defaultIcon.compress(Bitmap.CompressFormat.JPEG, 100, stream);

byte[] bitmapdata = stream.toByteArray();

लेकिन मुझे Drawable से बाइट सरणी कैसे मिलती है?


अगर ड्राबल एक बिटमैप है, तो आप इसे आज़मा सकते हैं।

long getSizeInBytes(Drawable drawable) {
    if (drawable == null)
        return 0;

    Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
    return bitmap.getRowBytes() * bitmap.getHeight();
}

Bitmap.getRowBytes () बिटमैप के पिक्सेल में पंक्तियों के बीच बाइट्स की संख्या देता है।

अधिक इस परियोजना को देखें: LazyList


सभी को धन्यवाद और इससे मेरी समस्या हल हो गई।

Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.my_pic);
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] bitMapData = stream.toByteArray();

Drawable d; // the drawable (Captain Obvious, to the rescue!!!)
Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] bitmapdata = stream.toByteArray();

File myFile = new File(selectedImagePath);

byte [] mybytearray  = new byte [filelenghth];

BufferedInputStream bis1 = new BufferedInputStream(new FileInputStream(myFile));

bis1.read(mybytearray,0,mybytearray.length);

अब प्रतिमा में छवि संग्रहीत है ..





android-bitmap