在Android中将String转换为byte []

时间:2014-09-25 07:46:56

标签: android android-bitmap

我想将路径图像的字符串转换为字节数组,而不是将其转换为Bitmap。

我有错误:

09-25 09:38:11.050:
W/System.err(21261): java.lang.IllegalArgumentException: bad base-64
09-25 09:38:11.350: 
W/System.err(21261): at android.util.Base64.decode(Base64.java:161)
09-25 09:38:11.350: 
W/System.err(21261): at android.util.Base64.decode(Base64.java:136)
09-25 09:38:11.350:
W/System.err(21261): at com.up.upload.MainActivity.UploadImage(MainActivity.java:186)
09-25 09:38:11.350: 
W/System.err(21261): at com.up.upload.MainActivity$2.run(MainActivity.java:149)
09-25 09:38:11.350: 
W/System.err(21261): at java.lang.Thread.run(Thread.java:841)

我想我做得不对,但我知道为什么。

非常感谢你的帮助。

提前致谢

我的代码如下:

    String lStr = "/storage/emulated/0/image.jpg"

    byte[] data = Base64.decode(lStr.getBytes(), 0);

    Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);

    Request.addProperty("docbinaryarray", bmp);

5 个答案:

答案 0 :(得分:2)

你做错了,伙计。您的代码仅转换String,而不是该路径中的图像数据。试试这个:

File imgFile = new  File("/storage/emulated/0/image.jpg");
if(imgFile.exists()){
    Bitmap bmp = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
    Request.addProperty("docbinaryarray", bmp);
}

答案 1 :(得分:1)

你这样做完全错了:

使用:

File mFile = new  File("/storage/emulated/0/image.jpg");
if(mFile.exists()){
    Bitmap bmp = BitmapFactory.decodeFile(mFile.getAbsolutePath());
}

答案 2 :(得分:0)

public static String encodeToBase64(String string)
 {
 String encodedString = "";
 try
 {
 byte[] byteData = null;
  if(Build.VERSION.SDK_INT >= 8) // Build.VERSION_CODES.FROYO --> 8
    {
 byteData = android.util.Base64.encode(string.getBytes(),android.util.Base64.DEFAULT);
}
else
{
 byteData = Base64Utility.encode(string.getBytes(),Base64Utility.DEFAULT);
}
 encodedString = new String(byteData);
}
catch (Exception e)
{
 }
return encodedString;
}

如果您正在使用api级别< 8然后下载Base64Utility.java

答案 3 :(得分:0)

如果你想从图像中获取字节数组 - 请尝试下一个代码:

 Bitmap bm = BitmapFactory.decodeFile("/path/image.jpg");
    ByteArrayOutputStream baos = new ByteArrayOutputStream();  
    bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object   
    byte[] b = baos.toByteArray(); 

答案 4 :(得分:0)

喜欢这个

 File imgFile = new  File("/sdcard/Images/test_image.jpg");
    if(imgFile.exists()){
        Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
//for drawable 
        //Drawable d = new BitmapDrawable(getResources(), myBitmap);
        ImageView myImage = (ImageView) findViewById(R.id.imageview);
        myImage.setImageBitmap(myBitmap);

    }