如何存储和获取点击和图库图像到sqlite数据库?

时间:2016-05-21 05:59:56

标签: android

我无法将路径和图像存储到数据库中,我想将路径或图像存储到数据库中,我想获取该图像并在更新配置文件后设置为imageview。我的onactvity结果请帮助我。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <Canvas Grid.Column="1" Grid.Row="1">
        <Line Y1="-10000" Y2="10000" Stroke="Black" StrokeThickness="1"/>
        <Line X2="10000" Stroke="Black" StrokeThickness="1"/>
    </Canvas>
</Grid>

//这是我保存在数据库中的方法

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (requestCode == 1) {
            File f = new File(Environment.getExternalStorageDirectory().toString());
            for (File temp : f.listFiles()) {
                if (temp.getName().equals("temp.jpg")) {
                    f = temp;
                    break;
                }
            }
            try {
                Bitmap bitmap;
                BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();

                bitmap = BitmapFactory.decodeFile(f.getAbsolutePath(),
                        bitmapOptions);
                ImagePaht = CommonUtility.encodeTobase64(bitmap);
                mAddProfilePic.setImageBitmap(bitmap);
                mAddProfilePic.setScaleType(ImageView.ScaleType.MATRIX);
                String path = android.os.Environment
                        .getExternalStorageDirectory()
                        + File.separator
                        + "Phoenix" + File.separator + "default";
                boolean delete = f.delete();
                OutputStream outFile = null;
                File file = new File(path, String.valueOf(System.currentTimeMillis()) + ".jpg");
                try {
                    outFile = new FileOutputStream(file);
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 85, outFile);
                    ByteArrayOutputStream stream = new ByteArrayOutputStream();
                    byteArray = stream.toByteArray();
                    outFile.flush();
                    outFile.close();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else if (requestCode == 2) {

            Uri selectedImage = data.getData();
            String[] filePath = {MediaStore.Images.Media.DATA};
            Cursor c = getContentResolver().query(selectedImage, filePath, null, null, null);
            if (c != null) {
                c.moveToFirst();
            }
            int columnIndex = c.getColumnIndex(filePath[0]);
            String picturePath = c.getString(columnIndex);
            c.close();
            Bitmap thumbnail = (BitmapFactory.decodeFile(picturePath));
           // Log.e("path of ", picturePath + "");
            ImagePaht = CommonUtility.encodeTobase64(thumbnail);
            mAddProfilePic.setImageBitmap(thumbnail);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            thumbnail.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byteArray = stream.toByteArray();
            mAddProfilePic.setScaleType(ImageView.ScaleType.MATRIX);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

要将图像存储到数据库中,您可以保存图像路径,也可以将Base64图像保存到数据库中
这里,我们将图像路径存储到数据库中

private void captureImage() {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

    fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);

    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

    // start the image capture Intent
    startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // if the result is capturing Image
    if (requestCode == CAMERA_CAPTURE_IMAGE_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            settingImaePath(fileUri);
        }
    }
    if (requestCode == PICK_IMAGE && resultCode == RESULT_OK && data != null && data.getData() != null) {
        Uri filePath = data.getData();
        try {
            //Getting the Bitmap from Gallery
            Log.i("file path", "" + filePath);
            final Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
            //Setting the Bitmap to ImageView
            Date now = new Date();
            android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);
            File imageFile = null;
            String mPath = null;
            try {
                // image naming and path  to include sd card  appending name you choose for file
                mPath = Environment.getExternalStorageDirectory().toString() + "/" + now.getTime() + ".jpg";

                imageFile = new File(mPath);

                FileOutputStream outputStream = new FileOutputStream(imageFile);
                int quality = 100;
                bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
                outputStream.flush();
                outputStream.close();

            } catch (Exception e) {
                e.printStackTrace();
            }
            UserProfile userProfile = new UserProfile();
            userProfile.setImagePath(mPath);
            ProfileTable.getInstance().add(signupBean);  // Here setting gallery image path into ProfileTable

            userImage.setImageBitmap(bitmap); // userImage is an Imageview
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


public void settingImaePath(Uri fileUri) {
    String filePath = fileUri.getPath();
    if (filePath != null) {
        // Displaying the image or video on the screen
        previewMedia(filePath);
    }

}


private void previewMedia(String filePath) {
    // Checking whether captured media is image or video

    Log.i("file path", "" + filePath);

    // bimatp factory
    BitmapFactory.Options options = new BitmapFactory.Options();

    // down sizing image as it throw s OutOfMemory Exception for larger
    // images
    options.inSampleSize = 8;

    final Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);

    Date now = new Date();
    android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);
    File imageFile = null;
    String mPath = null;
    try {
        // image naming and path  to include sd card  appending name you choose for file
        mPath = Environment.getExternalStorageDirectory().toString() + "/" + now.getTime() + ".jpg";

        imageFile = new File(mPath);

        FileOutputStream outputStream = new FileOutputStream(imageFile);
        int quality = 80;
        bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
        outputStream.flush();
        outputStream.close();

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

    UserProfile userProfile = new UserProfile();
    userProfile.setImagePath(mPath);
    ProfileTable.getInstance().add(signupBean);  // Here setting gallery image path into ProfileTable
    userImage.setImageBitmap(bitmap);

}


//For Viewing save image from path
final Bitmap bitmap = BitmapFactory.decodeFile(imagePath);
imageView.setImageBitmap(bitmap);