无法将位图图像转换为byte []

时间:2014-10-17 09:40:38

标签: android arrays image bitmap

我希望将捕获的图像转换为byte []。当我使用相机捕获图像时,它会被捕获并且还会显示预览,并且图像也会成功保存在我的外部存储器上。但是当我尝试转换预览图像时,它不会在字节数组中存储任何内容。 以下是我在手机上按预览图像按钮时调用的方法。

public static void previewCapturedImage() {
    try {
        static ByteArrayOutputStream stream = null;
        imgPreview.setVisibility(View.VISIBLE);
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = 8;
        final Bitmap bitmap = BitmapFactory.decodeFile(fileUri.getPath(),options);
        imgPreview.setImageBitmap(bitmap);
        stream = new ByteArrayOutputStream();
        bitmap.compress(CompressFormat.JPEG, 100, stream);
        byte[] byteArray = stream.toByteArray();

    } catch (NullPointerException e) {
      e.printStackTrace();
    }
}

2 个答案:

答案 0 :(得分:0)

将图片转换为字符串&字节数组,使用以下代码。


ByteArrayOutputStream baos = new ByteArrayOutputStream();  
yourbitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
//this will convert image to byte[] 
byte[] byteArrayImage = baos.toByteArray(); 
// this will convert byte[] to string
String encodedImage = Base64.encodeToString(byteArrayImage, Base64.DEFAULT);

答案 1 :(得分:0)

检查以下工作代码。这包括质量调整

/**
 * @param bitmap
 * @param quality 1 ~ 100
 * @return
 */
public static byte[] compressBitmap(Bitmap bitmap, int quality)
{
    try
    {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.PNG, quality, baos);

        return baos.toByteArray();
    } catch (Exception e)
    {
        PrintLog.print(TAG, e.toString(), e);
    }

    return null;
}