0

私は1つのディレクトリ、つまりファイルを作成し、ビットマップ画像をそのファイルに保存しています。今、それをバイト配列に変換する方法

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

イメージをファイルではなくバイト配列に書き込むように既存のコードを変更するだけの場合は、tryブロックを次のコードに置き換えます。

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

... wherebytesは typebyte[]を持ち、ファイル名を生成するコードを取り除き、既存のファイルが存在する場合は削除します。flush()ByteArrayOutputStream に書き込むので、 orclose()を呼び出す必要はありません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 に答える
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

これを使用して、保存したファイルを読み取ります。

// ファイルの内容をバイト配列で返します。
public static byte[] getBytesFromFile(File file) throws IOException {
    InputStream は = new FileInputStream(file);

    // ファイルのサイズを取得する
    長い長さ = file.length();

    // long 型を使用して配列を作成することはできません。
    // int 型である必要があります。
    // int型に変換する前にチェック
    // ファイルが Integer.MAX_VALUE より大きくないことを確認します。
    if (長さ > Integer.MAX_VALUE) {
        // ファイルが大きすぎます
    }

    // データを保持するバイト配列を作成します
    バイト[] バイト = 新しいバイト[(int)長さ];

    // バイト単位で読み込む
    int オフセット = 0;
    int numRead = 0;
    while (オフセット = 0) {
        オフセット += numRead;
    }

    // すべてのバイトが読み込まれたことを確認します
    if (オフセット

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

于 2012-09-03T12:09:37.683 に答える