从 imageviews 获取捕获图像的路径并上传到服务器

Getting path of captured image from imageviews and upload to server

我的屏幕上有四个图像视图,并从相机捕获图像并显示在其中,现在我想将这些图像上传到服务器。所以我使用下面的代码来获取这些路径,但它是通过异常。是否有可能将图像从相机捕获的图像视图上传到服务器(不将图像存储到内存中)。

         if (requestCode == 1&& resultCode == RESULT_OK)
                {
                    Bitmap photo = (Bitmap) data.getExtras().get("data");
                    purchase_Img_1.setImageBitmap(photo);
                    Uri tempUri = getImageUri(getApplicationContext(), photo);
                    File finalFile = new File(getRealPathFromURI(tempUri));

                }

    public Uri getImageUri(Context inContext, Bitmap inImage) {
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
        String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
        return Uri.parse(path);
    }

public String getRealPathFromURI(Uri uri) {
    Cursor cursor = getContentResolver().query(uri, null, null, null, null);
    cursor.moveToFirst();
    int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
    return cursor.getString(idx);
}

删除大部分代码。使用 compress()Bitmap 保存到文件中。现在您知道文件在哪里并且可以将其用于您的服务器上传过程。

Getting path of captured image from imageviews 

没有路径。没有路径。您获得了位图并将它们放置在视图中。

Uri tempUri = getImageUri(getApplicationContext(), photo);

此处您使用 MediaStore 存储了位图。你得到了一个 uri。

您可以为该 uri 打开一个输入流,从中读取并上传字节。

但是通过使用 MediaStore,您可以将位图保存到文件中。如果您不想这样做,最好将位图压缩为 ByteArrayOutputStream 并上传生成的字节数组。