【问题标题】:Converting correctly bitmap from gallery to base64将图库中的正确位图转换为 base64
【发布时间】:2014-07-24 10:04:17
【问题描述】:

我开发了一个 Android 应用程序,并开发了一项功能,可以从图库中拍照并将其发送到我的服务器并将其分配给用户作为他的个人资料图片。

我选择了一张图片(重要:由 ma 相机拍摄)并将其转换为 base64,然后再将其发送到我的服务器。当我得到图像并尝试显示它时,我只有部分图片,但不是 png 中的图像...我尝试更改 JPEG 中的 compressformat,这是最糟糕的...我从 2 天开始就不明白这个问题我疯了...请帮助:)

    private Bitmap bitmap; 



    public void chooseProfilePicture(View view) {
                Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(i, REQUEST_CODE);
            }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            InputStream stream = null;
            if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK)
                try {
                    if (bitmap != null)
                        bitmap.recycle(); // recyle unused bitmaps
                    stream = getContentResolver().openInputStream(data.getData());
                    bitmap = BitmapFactory.decodeStream(stream);
                    imageView.setImageBitmap(bitmap);
// HERE THE IMAGE IS DISPLAYED 100% WELL

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } finally {
                    if (stream != null)
                        try {
                            stream.close();
                        } catch (Exception ex) {
                            Log.e("EditProfilActivity", ex.getMessage());
                        }
                }
        }

public void save(View view) {

        if (bitmap != null) {

            try {
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
                bitmap.recycle();
                byte[] imageBytes = byteArrayOutputStream.toByteArray();
                byteArrayOutputStream.close();
                String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
                picture = encodedImage;
// HERE WHEN I TRY TO DISPLAY THE IMAGE I HAVE ONLY A PART OF THE IMAGE
            } catch (Exception e) {
                Log.e("", e.getMessage());
            }


        }

【问题讨论】:

    标签: android bitmap base64


    【解决方案1】:

    您正在尝试显示图像表单字符串(来自编码图像文件)?

    byte[] imagebyteArry = byteArrayOutputStream.toByteArray();
    String imageString = encodeImage(imagebyteArry);
    sendImageToserver(imageString);
    
    ............
    
    String imageString = getImageFromserver();
    byte[] imagebyteArry = decodeImage(imageString);
    Search how to show image from byte[] in android?
    
    public static String encodeImage(byte[] imageByteArray) {
        return Base64.encodeBase64URLSafeString(imageByteArray);
    }
    
    public static byte[] decodeImage(String imageDataString) {
        return Base64.decodeBase64(imageDataString);
    }
    

    【讨论】:

    • :) 下载jar文件org.apache.commons.codec.binary.Base64jar
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 2015-12-09
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多