安卓开发中 选择相册后剪切图片后得到的是 bitmap 如何转成File路径

OkHttpClient mOkHttpClient = new OkHttpClient();
        
        RequestBody requestBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("title", "wangshu")
                .addFormDataPart("image", "wangshu.jpg",
                        RequestBody.create(MEDIA_TYPE_PNG, new File("")))
                .build();

        Request request = new Request.Builder()
                .header("Authorization", "Client-ID " + "...")
                .url("http://wuliu.zhekd.com/index.php/Android/Me/upload")
                .post(requestBody)
                .build();

        mOkHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(okhttp3.Call call, IOException e) {
                Log.e("wangshu", "shibai");
            }

            @Override
            public void onResponse(okhttp3.Call call, Response response) throws IOException {
                Log.e("wangshul", response.body().string());
                Log.e("wangshu", "chengg");
            }

        });

RequestBody.create(MEDIA_TYPE_PNG, new File(""))) File 括号里要的是一个 文件路径 但 图片剪切后是个bitmap 怎么把bitmap转为 file路径尼

阅读 4.4k
4 个回答

选择图片的话一般会拿到 Uri,如果是 file uri 的话可以直接转换成路径,如果是 content uri 建议还是转存一下。

比如像 Google Photos 这种 Uri 对应的是一个链接的话是没办法拿到文件路径的。

新手上路,请多包涵

裁剪图片也是得到图片的物理路径来进行转换bitmap的。你在转换哪里拿到图片路径。getPathUri。直接new file就行了

把Bitmap保存成文件就可以了,路径设置成你要的即可

public static void saveBitmap(Bitmap bitmap, String path, int quality) throws IOException {
    String dir = path.substring(0, path.lastIndexOf("/"));
    File dirFile = new File(dir);
    if (!dirFile.exists() || !dirFile.isDirectory()) {
        try {
            if (!dirFile.mkdirs()) {
                return;
            }
        } catch (Exception e) {
            Log.e("Error", e.toString());
        }

    }
    FileOutputStream out;
    try {
        out = new FileOutputStream(path);
        if (bitmap.compress(Bitmap.CompressFormat.PNG, quality, out)) {
            out.flush();
            out.close();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}
新手上路,请多包涵

clipboard.png

如果你使用的系统的图片裁剪,那你就可以根据上面的方法;
如果你使用的是第三方应用的裁剪,那么你就要将bitmap先保存到本地,然后获取他的文件路径;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题