将裁剪后的图像保存到SQLite数据库中

时间:2016-08-13 21:00:41

标签: android image sqlite

我理解这个问题之前已经被问到,我已经研究过没有运气的可能解决方案,所以这里就是这样。我试图将裁剪的图像保存到sqlite数据库中。我在onActivityResult()方法中使用了Android-Image-Cropper cropper库,如下所示:

除了我试图将图像保存为位图的部分外,一切正常。我一直变空。然而,我可以使用

行填充我的ImageView

ivTroopPhoto.setImageURI(result.getUri());

如果有人使用过这个API,可以帮我解决这个问题。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if ((requestCode == PIC_FROM_CAMERA) || (requestCode == PIC_FROM_GALLERY)) {
        if (resultCode == RESULT_OK) {
            Uri picUri = data.getData();
            CropImage.activity(picUri)
                    .setGuidelines(CropImageView.Guidelines.ON)
                    .setFixAspectRatio(true)
                    .setAspectRatio(1, 1)
                    .start(this);
        }
    }

    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
        CropImage.ActivityResult result = CropImage.getActivityResult(data);
        if (resultCode == RESULT_OK) {
            ibCameraIcon.setVisibility(View.GONE);
            ivTroopPhoto.setVisibility(View.VISIBLE);
            ivTroopPhoto.setImageURI(result.getUri());
            tvTroopPhoto.setText(R.string.change_photo);

            Log.d("dozer74", "==============================> Image Uri: " + result.getUri().getPath());

            //Uri imageUir = data.getData();
            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), result.getUri());
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
                byte[] byteArray = byteArrayOutputStream .toByteArray();
                String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
                Log.d("dozer74", "==========> Encoded Base64 Image: " + encoded);
            } catch (IOException e) {
                e.printStackTrace();
            }

        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
            Toast.makeText(this, String.format("Cropping failed: %s", result.getError()), Toast.LENGTH_LONG).show();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我能够解决这个问题。我使用了api的imageview,并能够将图像作为位图。