2012-06-25 13 views
8

नीचे कोड है जो मैं लोगो मुद्रण के साथ सामना करता हूं। लोगो res/drawable फ़ोल्डर में रखा गया है। जब मैं ऐप चलाता हूं, तो यह फेंकता है:एक ड्रॉ करने योग्य फ़ाइल फ़ाइल कैसे प्राप्त करें?

java.io.FileNotFoundException: /android.resource:/com.android.test/2130837505 (No such file or directory). 

कोई सलाह?

public boolean printLogo() 
    { 
     Uri logo_path = Uri.parse("android.resource://com.android.test/" + R.drawable._logo); 
     File logo = new File(logo_path.toString()); 
     byte[] logo_bytes = new byte[(int) logo.length()]; 
     System.out.print("Length:" + logo.length()); 
     FileInputStream fs; 
     try { 
      fs = new FileInputStream(logo); 
      fs.read(logo_bytes); 
      fs.close(); 
      mChatService.write(logo_bytes); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     }catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return true; 
    } 
+0

कोशिश यू आपकी समस्या को समझा सकता है सकते हैं कि क्या यू करने की कोशिश कर रहे हैं? –

+0

मैं ब्लूटूथ से जुड़े प्रिंटर के माध्यम से बिटमैप प्रिंट करने का प्रयास करता हूं। 'mChatService.write (बाइट [] बी []) 'वह है जहां' आउटपुटस्ट्रीम.राइट (बाइट [] बी []) 'निष्पादित किया गया है। उस स्थिति में, मुझे एक बाइट सरणी में बिटमैप स्थानांतरित करने की आवश्यकता है। मैंने बिटमैप को res/drawable फ़ोल्डर में रखा है, और ऊपर दिए गए कोड को लिखा है, तो मैंने फ़ाइल नॉटफाउंड अपवाद का सामना किया जैसा मैंने वर्णन किया था। – user1437534

+0

धीमे जवाब देखें मुझे लगता है कि इससे आपको –

उत्तर

10

हाँ आप संपत्ति या कच्चे निर्देशिका के अंतर्गत इस प्रकार के संसाधन जोड़ना चाहिए ...

लेकिन अगर आप have any limitation ans आप केवल बाइट सरणी की जरूरत

Bitmap bmp= BitmapFactory.decodeResource(context.getResources(), 
              R.drawable.icon_resource); 

    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] byteArray = stream.toByteArray(); 
+0

होगा यह काम करता है लेकिन एक नई समस्या होती है। इस ByteArray के साथ, छवि के बजाय अपठनीय, गन्दा कोड का एक गुच्छा मुद्रित किया गया था। जिस छवि को मैं मुद्रित करता हूं वह एक पीएनजी है, मैं जिस प्रिंटर का उपयोग करता हूं वह एक काला सफेद प्रिंटर है। क्या आपको पता है कि समस्या क्या हो सकती है? – user1437534

+0

जहां तक ​​मैं देखता हूं, पीएनजी काला सफेद है। – user1437534

+0

छवि प्रकार (jpg/png) क्या है जिसमें से हम बाइट सरणी प्राप्त कर रहे हैं ... –

0

संपत्ति के तहत अपनी छवि संसाधन रखो पहले फ़ोल्डर है, तो संसाधन से InputStream प्राप्त करने के लिए AssetManager उपयोग कर सकते हैं।

AssetManager mgr = context.getAssets(); 
FileInputStream fin = (FileInputStream)mgr.open("path/filename"); 

path में संपत्ति फ़ोल्डर नहीं होना चाहिए।

+0

मदद मिलेगी 'फ़ाइल नाम' में एक्सटेंशन, उदा।, '। Png' शामिल है? – user1437534

+0

हाँ .. उदा। फ़ोल्डर संरचना 'संपत्ति> छवियां> new.png' है तो पथ 'छवियों/new.png' – Ronnie

संबंधित मुद्दे