2012-06-25 6 views
8

A continuación se muestra el código que hago frente a la impresión de logotipos. El logo se coloca en la carpeta res/drawable. Cuando ejecuto la aplicación, arroja:¿Cómo obtener una instancia de archivo de un dibujable?

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

¿Algún consejo?

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 puede explicar su problema lo que u están tratando de hacer? –

+0

Intento imprimir un mapa de bits mediante una impresora conectada por bluetooth. 'mChatService.write (Byte [] b [])' es donde se ejecuta 'OutputStream.write (Byte [] b [])'. En ese caso, necesito transferir un mapa de bits a una matriz de bytes. Coloqué el mapa de bits en la carpeta res/dibujable, y escribí el código anterior, luego encontré la excepción FileNotFoundException tal como lo describí. – user1437534

+0

ver la respuesta de Dheeresh, creo que esto te ayudará –

Respuesta

10

sí se debe añadir el recurso de este tipo en el activo o directorio en bruto ...

pero si have any limitation ans sólo necesita matriz de bytes puede tratar

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

Esto funciona, pero se produce un nuevo problema. Con este byteArray, se imprimió un montón de código ilegible e ilegible en lugar de una imagen. La imagen que suelo imprimir es una PNG, la impresora que uso es una impresora blanca y negra. ¿Tienes alguna idea de cuál es el problema? – user1437534

+0

por lo que veo, el PNG es negro blanco. – user1437534

+0

qué es el tipo de imagen (jpg/png) del que estamos obteniendo la matriz de bytes ... –

0

Ponga sus recursos de imagen en el activo de carpeta y se puede utilizar el AssetManager para conseguir InputStream de recursos.

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

path no debe contener la carpeta de activos.

+0

¿el 'nombre de archivo' aquí incluye la extensión, por ejemplo, '. Png'? – user1437534

+0

sí ... p. La estructura de la carpeta es 'assets> images> new.png' y la ruta será' images/new.png' – Ronnie

Cuestiones relacionadas