मैं एक यूआरएल से imags डाउनलोड करने की कोशिश कर रहा हूं और फिर उन्हें डीकोड कर रहा हूं। समस्या यह है कि मुझे नहीं पता कि वे कितने बड़े हैं और यदि मैं उन्हें तुरंत डीकोड करता हूं, तो ऐप बहुत बड़ी छवियों के साथ दुर्घटनाग्रस्त हो जाता है।मुझे java.io.IOException क्यों मिल रहा है: मार्क को अवैध कर दिया गया है?
मैं निम्नलिखित कर रहा हूं और यह अधिकांश छवियों के साथ काम करता है लेकिन उनमें से कुछ के साथ, यह java.io.IOException: Mark has been invalidated
अपवाद फेंकता है। यह आकार का मामला नहीं है क्योंकि यह 75 केबी या 120 केबी छवि के साथ होता है और 20 एमबी या 45 केबी छवि के साथ नहीं होता है। प्रारूप भी महत्वपूर्ण नहीं है क्योंकि यह या तो jpg या png छवि के साथ हो सकता है।
pis
एक InputStream
है।
Options opts = new BitmapFactory.Options();
BufferedInputStream bis = new BufferedInputStream(pis);
bis.mark(1024 * 1024);
opts.inJustDecodeBounds = true;
Bitmap bmImg=BitmapFactory.decodeStream(bis,null,opts);
Log.e("optwidth",opts.outWidth+"");
try {
bis.reset();
opts.inJustDecodeBounds = false;
int ratio = opts.outWidth/800;
Log.e("ratio",String.valueOf(ratio));
if (opts.outWidth>=800)opts.inSampleSize = ratio;
return BitmapFactory.decodeStream(bis,null,opts);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
लेकिन यह कैसे मैं InputStream कि जानकारी शामिल है एक बिटमैप में परिवर्तित करने पारित कर सकते हैं? ¿ – sergi
@sergi इस यह करने के लिए सबसे अच्छा तरीका है। आपके पास इनपुट इनपुट है और 'डीकोडस्ट्रीम()' इनपुट स्ट्रीम पैरामीटर लेता है। – Haphazard
अब मुझे यह काम मिल गया है लेकिन यह देखना चाहता था कि यह करने का सबसे अच्छा तरीका कौन सा था .. – sergi