上传拍摄的图像,直接在Android中,以Cloudinary [英] upload captured image to Cloudinary directly in Android

查看:157
本文介绍了上传拍摄的图像,直接在Android中,以Cloudinary的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要拍摄一张照片,并通过它来直接Cloudinary ,,我怎么能知道图片的名称,在上传的语句设置
    cloudinary.uploader()上传(nameofthepic,Cloudinary.emptyMap());
  

  这里是我的code

I want to capture a picture and pass it to Cloudinary directly,, how can I know the name of the pic to set it at the upload statement cloudinary.uploader().upload("nameofthepic", Cloudinary.emptyMap()); here is my code

公共类相机扩展ActionBarActivity实现View.OnClickListener {
    按钮B;

public class Camera extends ActionBarActivity implements View.OnClickListener { Button b;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.camera);

    b= (Button) findViewById(R.id.button);
    b.setOnClickListener(this);

}
public static final int TAKE_PHOTO_REQUEST = 0;



@Override
public void onClick(View v) {
    Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(takePhotoIntent, TAKE_PHOTO_REQUEST);
    Map config = new HashMap();
    config.put("cloud_name", "dkepfkeuu");
    config.put("api_key", "552563677649679");
    config.put("api_secret", "7n8wJ42Hr_6nqZ4aOMDXjTIZ4P0");
    Cloudinary cloudinary = new Cloudinary(config);

    try {
        cloudinary.uploader().upload("", Cloudinary.emptyMap());
    } catch (IOException e) {
        e.printStackTrace();
    }




}

}

推荐答案

的顺序是这样的:
以图片 - >保存到文件 - >上传至cloudinary
这里是code:

The order is like this: Take picture->save to file->upload to cloudinary Here is the code:

File photoFile;

     @Override
        public void onClick(View v) {
            Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            if (takePhotoIntent.resolveActivity(getPackageManager()) != null) {
                // Create the File where the photo should go
                photoFile = null;
                try {
                    photoFile = createImageFile();
                } catch (IOException ex) {
                    // Error occurred while creating the File
                }
                // Continue only if the File was successfully created
                if (photoFile != null) {
                    takePhotoIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                            Uri.fromFile(photoFile));
                    startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
                }
            }
        }
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == REQUEST_TAKE_PHOTO) {
            if (resultCode == RESULT_OK) {
                //File to upload to cloudinary
                Map config = new HashMap();
                config.put("cloud_name", "dkepfkeuu");
                config.put("api_key", "552563677649679");
                config.put("api_secret", "7n8wJ42Hr_6nqZ4aOMDXjTIZ4P0");
                Cloudinary cloudinary = new Cloudinary(config);
                try {
                    cloudinary.uploader().upload(photoFile.getAbsolutePath(),          Cloudinary.emptyMap());
                } catch (IOException e) {
                    e.printStackTrace();
                }

            } else if (resultCode == RESULT_CANCELED) {
                // User cancelled the image capture
                //finish();
            }
        }
    }

    private File createImageFile() throws IOException {
            // Create an image file name
            String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
            String imageFileName = "capturedImage";
            File storageDir = Environment.getExternalStoragePublicDirectory(
                    Environment.DIRECTORY_PICTURES);
            File image = File.createTempFile(
                    imageFileName,  /* prefix */
                    ".jpg",         /* suffix */
                    storageDir      /* directory */
            );

            // Save a file: path for use with ACTION_VIEW intents
            return image;
        }

所以,你实际上是上传 photoFile 这是实际拍摄的图像。

其漂亮的把上传的功能与一些图像变换一起(规模,调整大小)的的AsyncTask ,因为在现代的手机摄像头的图像是相当大的(大小)。

Its nice to put the upload function along with some image transformations(scale,resize) in AsyncTask because camera images in modern handsets are quite big(in size).

希望它帮助。

这篇关于上传拍摄的图像,直接在Android中,以Cloudinary的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆