0

我正在创建一个目录,即文件并将位图图像存储到该文件中,现在如何将其转换为字节数组

File myDir = new File(root + "/saved_images");      
                myDir.mkdirs();
                Random generator = new Random();
                int n = 10000;
                n = generator.nextInt(n);
                String fname = "Image-"+ n +".jpg";
                File file = new File (myDir, fname);

                if (file.exists ()) file.delete (); 
                try {
                    FileOutputStream out = new FileOutputStream(file);

                    bmp.compress(Bitmap.CompressFormat.JPEG, 90, out);

                    out.flush();
                    out.close();
                } catch (Exception e) {
                    e.printStackTrace();

                }
4

4 回答 4

0

不完全确定您要做什么,但您可以尝试以下操作:

InputStream is = ...
ByteArrayOutputStream buffer = new ByteArrayOutputStream();

int nRead;
byte[] data = new byte[some huge number, power of 2 preferably];

while ((nRead = is.read(data, 0, data.length)) != -1) {
  buffer.write(data, 0, nRead);
}

buffer.flush();

byte[] byteArray = buffer.toByteArray();
于 2012-09-03T12:09:06.543 回答
0

只需使用它来读取您保存的文件。

// 以字节数组的形式返回文件的内容。
公共静态字节 [] getBytesFromFile(文件文件)抛出 IOException {
    InputStream is = new FileInputStream(file);

    // 获取文件大小
    长长度 = file.length();

    // 不能使用 long 类型创建数组。
    // 它必须是 int 类型。
    // 在转换为 int 类型之前,检查
    // 确保文件不大于 Integer.MAX_VALUE。
    如果(长度>整数.MAX_VALUE){
        // 文件太大
    }

    // 创建字节数组来保存数据
    字节[]字节=新字节[(int)长度];

    // 读入字节
    整数偏移 = 0;
    int numRead = 0;
    而(偏移量= 0){
        偏移量 += 读数;
    }

    // 确保所有字节都已读入
    如果(偏移量

礼貌:http ://www.exampledepot.com

于 2012-09-03T12:09:37.683 回答
0

如果您只想修改现有代码以将图像写入字节数组而不是文件,则将try块替换为以下代码:

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.JPEG, 90, out);
    bytes = out.getBytes();

... wherebytes有 type byte[],并摆脱生成文件名的代码并删除现有文件(如果存在)。由于您写入 ByteArrayOutputStream,因此无需调用flush()close()on out。(他们不会做任何事情。)

于 2012-09-03T12:15:43.957 回答
0

我已经使用此代码将图像文件转换为字节 araay,

Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.abc);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            bm.compress(Bitmap.CompressFormat.JPEG, 40 , bos);
            public byte[] bitmapdata = bos.toByteArray();
            Log.w("Image Conversion", String.valueOf(bitmapdata.length));
            String converted_txt="";
            for (int i = 0; i < bitmapdata.length; i++) 
           { 
               Log.w("Image Conversion", String.valueOf(bitmapdata[i]));
               ba = bitmapdata[i];
               converted_txt=converted_txt+bitmapdata[i]; 
           }
           try 
           {
               File myFile = new File("/sdcard/myImageToByteFile.jpg");
               myFile.createNewFile();
               fOut = new FileOutputStream(myFile);
               OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
               myOutWriter.write(ba);
               myOutWriter.close();
               fOut.close();
           }
           catch (Exception e) 
           {
               Toast.makeText(getApplicationContext(), e.getMessage(),5000).show();
           }
于 2012-09-03T12:43:55.907 回答