2017-05-07 81 views
0

我在将位图转换为Base64时遇到问题。我想从相机或画廊发布一些图片。当我把它们作为图像,我必须转换为base64,但是当我得到字符串并使用http://codebeautify.org/base64-to-image-converter进行测试来查看我的图像时。结果看起来质量很差。我该如何解决这个请帮我? 这里是我的代码:Android将位图转换为Base64字符串问题

protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 
    switch(requestCode) 
    { 
     case 0: 
      if(resultCode == RESULT_OK) 
      { 
       Bundle extras = imageReturnedIntent.getExtras(); 
       Bitmap selectedImage = (Bitmap)extras.get("data"); 
       secilenImage.setImageBitmap(selectedImage); 
       String encodedImage; 
       ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
       try 
       { 
        selectedImage.compress(Bitmap.CompressFormat.PNG, 100, stream); 
        byte[] b = stream.toByteArray(); 
        encodedImage = Base64.encodeToString(b, Base64.DEFAULT); 
        images.add(i, encodedImage); 
        Log.d("StringForCamera: ", encodedImage); 
        stream.close(); 
       } 
       catch(IOException e) 
       { 
        e.printStackTrace(); 
       } 
       secilenImage.setImageBitmap(selectedImage); 
       secilenImage.setEnabled(false); 
      } 
      break; 
     case 1: 
      if(resultCode == RESULT_OK) 
      { 
       Uri imageUri = imageReturnedIntent.getData(); 
       Bitmap selectedImage = null; 
       String encodedImage; 
       try 
       { 
        selectedImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri); 
        ByteArrayOutputStream byteArrayBitmapStream = new ByteArrayOutputStream(); 
        selectedImage.compress(Bitmap.CompressFormat.PNG, 100, byteArrayBitmapStream); 
        byte[] b = byteArrayBitmapStream.toByteArray(); 
        encodedImage = Base64.encodeToString(b, Base64.NO_WRAP); 
        images.add(i, encodedImage); 
        Log.d("StringForGallery: ",encodedImage); 
       } 
       catch(IOException e) 
       { 
        e.printStackTrace(); 
       } 
       secilenImage.setImageBitmap(selectedImage); 
       secilenImage.setEnabled(false); 
      } 
      break; 
    } 
    ++i; 
} 

回答

0
(Bitmap)extras.get("data"); 

也就是说只有图像的缩略图。因此质量低下。

+0

你好,谢谢你的回答。那么我如何从相机获取图像? 编辑:我有相同的问题,在画廊上。 –

+0

Thete是数以百计的检查在互联网和本网站上用相机获取图片。你的问题经常被报道。只是谷歌的使用意图。 – greenapps

相关问题