Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在android中使用解析api在解析服务器中上载图像_Android_Database_Parse Platform_Android Imageview - Fatal编程技术网

无法在android中使用解析api在解析服务器中上载图像

无法在android中使用解析api在解析服务器中上载图像,android,database,parse-platform,android-imageview,Android,Database,Parse Platform,Android Imageview,我尝试从gallery中选择一幅图像,并保存在android的parse cloud server中。 但是我做不到 我尝试了以下代码: OnImageView单击事件选择图像: imageDish.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { Intent int

我尝试从gallery中选择一幅图像,并保存在android的parse cloud server中。 但是我做不到

我尝试了以下代码:

OnImageView单击事件选择图像:

imageDish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            try {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(
                        Intent.createChooser(intent, "Select Picture"),
                        SELECT_PICTURE);
            } catch (Exception e) {
                Toast.makeText(getActivity(),
                        "Select Image From Gallery", Toast.LENGTH_LONG)
                        .show();
                // TODO: handle exception
            }

        }
    });
 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            selectedImageUri = data.getData();

            selectedImagePath = getPath(selectedImageUri);
            System.out.println("Image Path : " + selectedImagePath);
            imageDish.setImageURI(selectedImageUri);
        }
    }
}


@SuppressWarnings("deprecation")
public String getPath(Uri uri) {
    String[] projection = {MediaStore.Images.Media.DATA};
    Cursor cursor = getActivity().managedQuery(uri, projection, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);

}
 InputStream imageStream = null;
    try {
                imageStream = getActivity().getContentResolver().openInputStream(
                        selectedImageUri);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            Bitmap bitmap = BitmapFactory.decodeStream(imageStream);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            // Compress image to lower quality scale 1 - 100
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] image = stream.toByteArray();
            ParseFile file = new ParseFile("FoodImage", image);
            // Upload the image into Parse Cloud
            file.saveInBackground();
            Log.d("File======", "" + file);



      try {
                ParseObject Foodobject = new ParseObject("Food");
                Foodobject.put("FoodName", Name);
                Foodobject.put("ResId", ParseObject.createWithoutData("Restaurant",Res_id);
                Foodobject.put("FoodCategory", ParseObject.createWithoutData("FoodCategory", _CategoryId));
                Foodobject.put("FoodDesc", Des);
                Foodobject.put("Price",priceNumber);
                Foodobject.put("VegOnly", "Y");
                Foodobject.put("IsRecommended", false);
                Foodobject.put("FoodImage", file);
                Foodobject.saveInBackground();
               } catch (Exception ex) {
                Log.e("Error", "" + ex);
            }
OnActivityResult:

imageDish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            try {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(
                        Intent.createChooser(intent, "Select Picture"),
                        SELECT_PICTURE);
            } catch (Exception e) {
                Toast.makeText(getActivity(),
                        "Select Image From Gallery", Toast.LENGTH_LONG)
                        .show();
                // TODO: handle exception
            }

        }
    });
 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            selectedImageUri = data.getData();

            selectedImagePath = getPath(selectedImageUri);
            System.out.println("Image Path : " + selectedImagePath);
            imageDish.setImageURI(selectedImageUri);
        }
    }
}


@SuppressWarnings("deprecation")
public String getPath(Uri uri) {
    String[] projection = {MediaStore.Images.Media.DATA};
    Cursor cursor = getActivity().managedQuery(uri, projection, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);

}
 InputStream imageStream = null;
    try {
                imageStream = getActivity().getContentResolver().openInputStream(
                        selectedImageUri);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            Bitmap bitmap = BitmapFactory.decodeStream(imageStream);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            // Compress image to lower quality scale 1 - 100
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] image = stream.toByteArray();
            ParseFile file = new ParseFile("FoodImage", image);
            // Upload the image into Parse Cloud
            file.saveInBackground();
            Log.d("File======", "" + file);



      try {
                ParseObject Foodobject = new ParseObject("Food");
                Foodobject.put("FoodName", Name);
                Foodobject.put("ResId", ParseObject.createWithoutData("Restaurant",Res_id);
                Foodobject.put("FoodCategory", ParseObject.createWithoutData("FoodCategory", _CategoryId));
                Foodobject.put("FoodDesc", Des);
                Foodobject.put("Price",priceNumber);
                Foodobject.put("VegOnly", "Y");
                Foodobject.put("IsRecommended", false);
                Foodobject.put("FoodImage", file);
                Foodobject.saveInBackground();
               } catch (Exception ex) {
                Log.e("Error", "" + ex);
            }
分析保存图像的代码:

imageDish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            try {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(
                        Intent.createChooser(intent, "Select Picture"),
                        SELECT_PICTURE);
            } catch (Exception e) {
                Toast.makeText(getActivity(),
                        "Select Image From Gallery", Toast.LENGTH_LONG)
                        .show();
                // TODO: handle exception
            }

        }
    });
 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            selectedImageUri = data.getData();

            selectedImagePath = getPath(selectedImageUri);
            System.out.println("Image Path : " + selectedImagePath);
            imageDish.setImageURI(selectedImageUri);
        }
    }
}


@SuppressWarnings("deprecation")
public String getPath(Uri uri) {
    String[] projection = {MediaStore.Images.Media.DATA};
    Cursor cursor = getActivity().managedQuery(uri, projection, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);

}
 InputStream imageStream = null;
    try {
                imageStream = getActivity().getContentResolver().openInputStream(
                        selectedImageUri);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            Bitmap bitmap = BitmapFactory.decodeStream(imageStream);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            // Compress image to lower quality scale 1 - 100
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] image = stream.toByteArray();
            ParseFile file = new ParseFile("FoodImage", image);
            // Upload the image into Parse Cloud
            file.saveInBackground();
            Log.d("File======", "" + file);



      try {
                ParseObject Foodobject = new ParseObject("Food");
                Foodobject.put("FoodName", Name);
                Foodobject.put("ResId", ParseObject.createWithoutData("Restaurant",Res_id);
                Foodobject.put("FoodCategory", ParseObject.createWithoutData("FoodCategory", _CategoryId));
                Foodobject.put("FoodDesc", Des);
                Foodobject.put("Price",priceNumber);
                Foodobject.put("VegOnly", "Y");
                Foodobject.put("IsRecommended", false);
                Foodobject.put("FoodImage", file);
                Foodobject.saveInBackground();
               } catch (Exception ex) {
                Log.e("Error", "" + ex);
            }
这是我的日志输出:

imageDish.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            try {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(
                        Intent.createChooser(intent, "Select Picture"),
                        SELECT_PICTURE);
            } catch (Exception e) {
                Toast.makeText(getActivity(),
                        "Select Image From Gallery", Toast.LENGTH_LONG)
                        .show();
                // TODO: handle exception
            }

        }
    });
 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == Activity.RESULT_OK) {
        if (requestCode == SELECT_PICTURE) {
            selectedImageUri = data.getData();

            selectedImagePath = getPath(selectedImageUri);
            System.out.println("Image Path : " + selectedImagePath);
            imageDish.setImageURI(selectedImageUri);
        }
    }
}


@SuppressWarnings("deprecation")
public String getPath(Uri uri) {
    String[] projection = {MediaStore.Images.Media.DATA};
    Cursor cursor = getActivity().managedQuery(uri, projection, null, null, null);
    int column_index = cursor
            .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
    cursor.moveToFirst();
    return cursor.getString(column_index);

}
 InputStream imageStream = null;
    try {
                imageStream = getActivity().getContentResolver().openInputStream(
                        selectedImageUri);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            Bitmap bitmap = BitmapFactory.decodeStream(imageStream);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            // Compress image to lower quality scale 1 - 100
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] image = stream.toByteArray();
            ParseFile file = new ParseFile("FoodImage", image);
            // Upload the image into Parse Cloud
            file.saveInBackground();
            Log.d("File======", "" + file);



      try {
                ParseObject Foodobject = new ParseObject("Food");
                Foodobject.put("FoodName", Name);
                Foodobject.put("ResId", ParseObject.createWithoutData("Restaurant",Res_id);
                Foodobject.put("FoodCategory", ParseObject.createWithoutData("FoodCategory", _CategoryId));
                Foodobject.put("FoodDesc", Des);
                Foodobject.put("Price",priceNumber);
                Foodobject.put("VegOnly", "Y");
                Foodobject.put("IsRecommended", false);
                Foodobject.put("FoodImage", file);
                Foodobject.saveInBackground();
               } catch (Exception ex) {
                Log.e("Error", "" + ex);
            }
文件===:com.parse。ParseFile@39f19700


用这个替换你的代码

ParseFile file = new ParseFile("FoodImage.png", image);
在parse docs中,我们清楚地提到,您为具有文件扩展名的文件命名。这使Parse能够找出文件类型并相应地处理它。
我认为您的图像大小问题,可能是您从gallery中选择的图像太大,无法保存在parse.com中

所以试试这个代码

它对我有用

                ByteArrayOutputStream stream = null;
                Bitmap bitmap = BitmapFactory.decodeFile(picturePath)
                Bitmap newbitmap = Bitmap.createScaledBitmap(bitmap, 200, 200, true);
                stream = new ByteArrayOutputStream();   
                newbitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);

            byte[] image = stream.toByteArray();
            final ParseFile file = new ParseFile("FoodImage.png", image);
            file.saveInBackground(new SaveCallback() {
                @Override
                public void done(ParseException e) {
                    if(e==null){
                     // Your Parse Code....
                      }
                  }

试试这个链接@NikitaSukhadiya是的!我尝试了…但不起作用…:-(那么什么不起作用呢?@Wain当我从图库中选择图像时,它没有存储在parse.but
Bitmap Bitmap=BitmapFactory.decodeResource(getResources(),R.mipmap.ic_启动器)中)
当写入直接资源映像时,它已成功保存!!!您如何测试它?该保存是异步的,我尝试了,但不起作用..当我从可绘图文件写入默认映像时,它已保存..您可以尝试位图Bitmap=BitmapFactory.decodeFile(selectedImagePath)吗;而不是位图位图=BitmapFactory.decodeStream(imageStream);