2012-06-25 21 views
8

Dưới đây là mã tôi đối phó với in logo. Logo được đặt trong thư mục res/drawable. Khi tôi chạy ứng dụng, ứng dụng sẽ ném:Làm thế nào để có được một thể hiện File của một drawable?

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

Bạn có lời khuyên nào?

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

u có thể giải thích vấn đề của bạn những gì u đang cố gắng làm gì? –

+0

Tôi cố gắng in bitmap qua máy in được kết nối bluetooth. 'mChatService.write (Byte [] b [])' là nơi 'OutputStream.write (Byte [] b [])' được thi hành. Trong trường hợp đó, tôi cần chuyển bitmap sang mảng byte. Tôi đã đặt bitmap trong thư mục res/drawable và viết mã ở trên, sau đó tôi gặp FileNotFoundException giống như tôi đã mô tả. – user1437534

+0

xem Câu trả lời Dheeresh tôi nghĩ điều này sẽ giúp u –

Trả lời

10

có bạn nên thêm các tài nguyên của loại đó theo tài sản hoặc thư mục thô ...

nhưng nếu bạn have any limitation ans bạn chỉ cần mảng byte có thể thử

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

hoạt động nhưng một vấn đề mới xảy ra. Với byteArray này, một loạt các mã lộn xộn, không đọc được được in thay vì một hình ảnh. Hình ảnh tôi có xu hướng in là PNG, máy in tôi sử dụng là máy in màu đen trắng. Bạn có bất kỳ ý tưởng gì vấn đề có thể được? – user1437534

+0

cho đến nay như tôi thấy, PNG là màu đen trắng. – user1437534

+0

loại hình ảnh (jpg/png) mà chúng tôi đang nhận mảng byte ... –

0

Đặt nguồn hình ảnh của bạn dưới tài sản thư mục đầu tiên, sau đó có thể sử dụng AssetManager để nhận InputStream từ tài nguyên.

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

path không được chứa thư mục nội dung.

+0

'tên tệp' ở đây bao gồm phần mở rộng, ví dụ: '. Png'? – user1437534

+0

có .. ví dụ: cấu trúc thư mục là 'asset> images> new.png' thì đường dẫn sẽ là' images/new.png' – Ronnie

Các vấn đề liên quan