1

現在、ビットマップをディスクに保存する場合は、次を使用します。

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

代わりにデータをバイト配列に書き込むことは可能ですか?ビットマップの画像データだけでなく、ディスクに送られるデータを操作する必要があります。jpgは、メタデータなどの追加のもので構成されています。jpgでもかまいません。私はデータが何であるかには興味がありませんが、通常はディスクに書き込まれるデータ全体にアクセスするだけです。

4

4 に答える 4

2

次を使用して実行できます。

public byte[] convertBitmapToByteArray(Bitmap bitmap) {
    ByteArrayOutputStream buffer = new ByteArrayOutputStream(bitmap.getWidth() * bitmap.getHeight());
    bitmap.compress(CompressFormat.PNG, 100, buffer);
    return buffer.toByteArray();
}
于 2013-02-07T13:22:11.807 に答える
2

このコードを使用できます:

      ByteArrayOutputStream out = new ByteArrayOutputStream();

                bMap.compress(Bitmap.CompressFormat.PNG, 100, out);
                byte[] imageArray = out.toByteArray();
于 2013-02-07T13:42:51.683 に答える
2

元のピクセル データを (圧縮せずに) 保持したい場合は、次の方法を試してください。

public byte[] bitmapToByteArray(Bitmap bitmap) {
    ByteBuffer byteBuffer = ByteBuffer.allocate(bitmap.getByteCount());
    bitmap.copyPixelsToBuffer(byteBuffer);
    return byteBuffer.array();
}
于 2013-02-07T13:42:27.933 に答える
-1
U can try this.

if (Utility.isWifiPresent()
                    || Utility.isMobileConnectionPresent()) {
                URL url = new URL(fileUrl);
                InputStream iStream = url.openConnection().getInputStream();// .read(data)
                ByteArrayOutputStream buffer = new ByteArrayOutputStream();
                byte[] tmpArray = new byte[1024];
                int nRead;
                while ((nRead = iStream.read(tmpArray, 0, tmpArray.length)) != -1) {
                    buffer.write(tmpArray, 0, nRead);
                }
                buffer.flush();
                data = buffer.toByteArray();
                FileOutputStream fOut = null;
        //path to store

                    fOut = Utility.getFileOutputStreamForCloud(
                            sdcardFolderPath, fileUrl);
                }
                fOut.write(data);
                fOut.flush();
                fOut.close();
于 2013-02-07T13:36:13.440 に答える