map.put可以输入bitmap吗
时间: 2023-06-24 11:05:27 浏览: 88
在 Java 中,`Map` 是一个键值对的集合,其中键和值都是对象。`put` 方法的参数类型为键和值,通常情况下,键和值都应该是对象。如果您想将 `Bitmap` 对象放入 `Map` 中,可以将其作为值进行插入,例如:
```java
Map<String, Bitmap> map = new HashMap<>();
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_bitmap);
map.put("myKey", bitmap);
```
这里,我们将 `Bitmap` 对象作为值插入了 `Map` 中,并使用字符串 `"myKey"` 作为键。
相关问题
private void initView(){ permission(); ivAdd.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { openCarema(); } }); int oid = getIntent().getIntExtra("oid", 1); imgFile = new File(path); btn_add.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String name = et_name.getText().toString(); String suit = et_zhengzhuang.getText().toString(); String effect = et_effect.getText().toString(); String notice = et_notice.getText().toString(); String use_info = et_num.getText().toString(); //把图片先转化成bitmap格式 BitmapDrawable drawable = (BitmapDrawable) ivAdd.getDrawable(); Bitmap bitmap = drawable.getBitmap(); //二进制数组输出流 ByteArrayOutputStream byStream = new ByteArrayOutputStream(); //将图片压缩成质量为100的PNG格式图片 bitmap.compress(Bitmap.CompressFormat.JPEG, 50, byStream); //把输出流转换为二进制数组 byte[] byteArray = byStream.toByteArray(); String base64 = Base64.encodeToString(byteArray, Base64.URL_SAFE); HashMap<String, Object> map = new HashMap<>(); // map.put("img",byteArray); map.put("img",base64); map.put("name",name); map.put("suit",suit); map.put("oid",oid); map.put("effect",effect); map.put("notice",notice); map.put("useInfo",use_info); RequestBody requestBody = getRequestBody(map); add(requestBody); } }); }
这是一个 Android 中的 initView() 方法,其中包含了一些 UI 控件的初始化和点击事件的处理。这个方法中包含了一个拍照功能的调用 openCarema(),以及一个将图片转化成 base64 格式的操作。最后,这个方法使用 Retrofit 发送一个 HTTP POST 请求,将上传的图片和其他信息提交给服务器。
下面是android的图片上传代码,要求上传完后删除图片 private void doSubmitUpload_W() { Map<String, Object> uploadparams = null; try { uploadCallback_w = new AjaxCallback<JSONObject>() { @Override public void callback(String url, JSONObject json, AjaxStatus status) { parseUploadResult_w(url, json,status); } }; Long staffId = SessionManager.getInstance().getStaffId() == null?-1L:SessionManager.getInstance().getStaffId(); uploadparams = new HashMap<String, Object>();// ParamHelper.buildJSONParam(URLs.UPLOADFILE_API,json); String img = preferences.getString("img"+curPhotoPos_W,""); byte[] photots = ImageUtils.Bitmap2Bytes(ImageUtils.getBitmapByPath(img)); uploadparams.put("photoFile2",photots); uploadparams.put("StaffId", staffId); uploadparams.put("StaffName", SessionManager.getInstance().getStaffInfo().getStaffName()); uploadparams.put("OrderID", preferences.getString("isHaveOrder", "")); uploadparams.put("WorkOrderID", preferences.getString("workOrderId","")); uploadparams.put("TypeName", "WORK"); uploadparams.put("photosType", preferences.getString("photosType"+curPhotoPos_W,"")); // 异步网络请求 aQuery.ajax(BaseURLs.UPLOAD_KT_PHOTO, uploadparams, JSONObject.class, uploadCallback_w); } catch (Exception ex) { AlertUtils.showAlert(getBaseContext(), R.string.opt_prompt, R.string.unknown_error); ex.printStackTrace(); upload = false; } }
这段代码是用于在Android平台上实现图片上传功能。在上传完成后,会删除上传的。
代码中的`doSubmitUpload_W()`方法用于执行图片上传操作。首先,创建了一个`AjaxCallback<JSONObject>`对象`uploadCallback_w`,并在其`callback()`方法中调用了`parseUploadResult_w()`方法来解析上传结果。
接下来,获取了当前登录用户的员工ID,并将其放入`uploadparams`参数中。然后,获取了要上传的图片路径,并将图片转换为字节数组放入`uploadparams`参数中。
最后,将其他相关参数(员工姓名、订单ID、工单ID、类型等)放入`uploadparams`参数中,并通过异步网络请求方式调用`BaseURLs.UPLOAD_KT_PHOTO`接口。
注意:这段代码中并未包含删除图片的操作。如果需要在上传完成后删除图片,可以在`parseUploadResult_w()`方法中添加相应的删除逻辑。
阅读全文