我是靠谱客的博主 虚拟鞋子,这篇文章主要介绍Android 将图片网址url转化为bitmap,drawable转bitmap,file转bitmap,bitmap转file,Bitmap转String,Uri转Bitmap,现在分享给大家,希望可以做个参考。

file转bitmap

File param = new File();

复制代码
1
Bitmap bitmap= BitmapFactory.decodeFile(param.getPath());

drawable转bitmap

复制代码
1
Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.mipmap.jcss_03 );

url转bitmap

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Bitmap bitmap; public Bitmap returnBitMap(final String url){ new Thread(new Runnable() { @Override public void run() { URL imageurl = null; try { imageurl = new URL(url); } catch (MalformedURLException e) { e.printStackTrace(); } try { HttpURLConnection conn = (HttpURLConnection)imageurl.openConnection(); conn.setDoInput(true); conn.connect(); InputStream is = conn.getInputStream(); bitmap = BitmapFactory.decodeStream(is); is.close(); } catch (IOException e) { e.printStackTrace(); } } }).start(); return bitmap; }

方法二:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public Bitmap getBitmap(String url) { Bitmap bm = null; try { URL iconUrl = new URL(url); URLConnection conn = iconUrl.openConnection(); HttpURLConnection http = (HttpURLConnection) conn; int length = http.getContentLength(); conn.connect(); // 获得图像的字符流 InputStream is = conn.getInputStream(); BufferedInputStream bis = new BufferedInputStream(is, length); bm = BitmapFactory.decodeStream(bis); bis.close(); is.close();// 关闭流 } catch (Exception e) { e.printStackTrace(); } return bm; }

可配合前台线程显示

复制代码
1
2
3
4
5
6
7
8
9
private Handler mHandler = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case REFRESH_COMPLETE: myheadimage.setImageBitmap(bitmap);//显示 break; } } };
复制代码
1
2
3
String imageUrl = "http://www.pp3.cn/uploads/201511/2015111212.jpg"; bitmap= returnBitMap(imageUrl); mHandler.sendEmptyMessageDelayed(REFRESH_COMPLETE, 1000);

bitmap转file

复制代码
1
2
3
4
private String SAVE_PIC_PATH = Environment.getExternalStorageState().equalsIgnoreCase(Environment.MEDIA_MOUNTED) ? Environment.getExternalStorageDirectory().getAbsolutePath() : "/mnt/sdcard";// private String SAVE_REAL_PATH = SAVE_PIC_PATH + "/good/savePic";//保存的确

复制代码
1
saveFile(bmp, System.currentTimeMillis() + ".png");
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//保存方法 private void saveFile(Bitmap bm, String fileName) throws IOException { String subForder = SAVE_REAL_PATH; File foder = new File(subForder); if (!foder.exists()) foder.mkdirs(); File myCaptureFile = new File(subForder, fileName); Log.e("lgq","图片保持。。。。wwww。。。。"+myCaptureFile); ends = myCaptureFile.getPath(); if (!myCaptureFile.exists()) myCaptureFile.createNewFile(); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(myCaptureFile)); bm.compress(Bitmap.CompressFormat.JPEG, 100, bos); bos.flush(); bos.close(); // ToastUtil.showSuccess(getApplicationContext(), "已保存在/good/savePic目录下", Toast.LENGTH_SHORT); //发送广播通知系统 Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri uri = Uri.fromFile(myCaptureFile); intent.setData(uri); this.sendBroadcast(intent); }

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
if(mbitmap != null){ if(Build.VERSION.SDK_INT > Build.VERSION_CODES.Q){ saveImage29(mbitmap); }else{ if ( saveImage(file, mbitmap)){ LgqLogPlus.e("路径---3-- "+file); //发送广播通知系统 Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri uri = Uri.fromFile(new File(file)); intent.setData(uri); this.sendBroadcast(intent); } } } /** * API29 中的最新保存图片到相册的方法 */ private void saveImage29(Bitmap toBitmap) { //开始一个新的进程执行保存图片的操作 Uri insertUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues()); //使用use可以自动关闭流 try { OutputStream outputStream = getContentResolver().openOutputStream(insertUri, "rw"); if (toBitmap.compress(Bitmap.CompressFormat.JPEG, 90, outputStream)) { Log.e("保存成功", "success"); } else { Log.e("保存失败", "fail"); } } catch (FileNotFoundException e) { e.printStackTrace(); } } //统一方法将图片Bitmap保存在文件中 public static boolean saveImageToFile(Context mContext,String fileName, Bitmap frame) { if (fileName == null || fileName.length() <= 0) return false; if (frame == null || frame.getByteCount() <= 0) return false; ByteArrayOutputStream baos = new ByteArrayOutputStream(); frame.compress(Bitmap.CompressFormat.JPEG, 100, baos);//质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中 int options = 100; while (baos.toByteArray().length / 1024 > 100) { //循环判断如果压缩后图片是否大于100kb,大于继续压缩 baos.reset();//重置baos即清空baos //第一个参数 :图片格式 ,第二个参数: 图片质量,100为最高,0为最差 ,第三个参数:保存压缩后的数据的流 frame.compress(Bitmap.CompressFormat.JPEG, options, baos);//这里压缩options%,把压缩后的数据存放到baos中 options -= 10;//每次都减少10 } ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());//把压缩后的数据baos存放到ByteArrayInputStream中 Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);//把ByteArrayInputStream数据生成图片 if(bitmap!=null){ // AppLog.Loge("压缩后图片大小为:"+bitmap.getByteCount() + "---路径:"+fileName); saveBitmap(bitmap,fileName); } return true; } public static void saveBitmap(Bitmap bitmap,String path) { new Thread(new Runnable() { @Override public void run() { String savePath; File filePic; if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { savePath = path; } else { // AppLog.Loge( "saveBitmap failure : sdcard not mounted"); return; } try { filePic = new File(savePath); if (!filePic.exists()) { filePic.getParentFile().mkdirs(); filePic.createNewFile(); } FileOutputStream fos = new FileOutputStream(filePic); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.flush(); fos.close(); } catch (IOException e) { // AppLog.Loge( "保存图片失败 saveBitmap: " + e.getMessage()); return; } // AppLog.Loge( "saveBitmap success: " + filePic.getAbsolutePath()); } }).start(); }

 Uri转Bitmap

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public static Bitmap decodeUri(Context context, Uri uri, int maxWidth, int maxHeight) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; //只读取图片尺寸 readBitmapScale(context, uri, options); //计算实际缩放比例 int scale = 1; for (int i = 0; i < Integer.MAX_VALUE; i++) { if ((options.outWidth / scale > maxWidth && options.outWidth / scale > maxWidth * 1.4) || (options.outHeight / scale > maxHeight && options.outHeight / scale > maxHeight * 1.4)) { scale++; } else { break; } } options.inSampleSize = scale; options.inJustDecodeBounds = false;//读取图片内容 options.inPreferredConfig = Bitmap.Config.RGB_565; //根据情况进行修改 Bitmap bitmap = null; try { bitmap = readBitmapData(context, uri, options); } catch (Throwable e) { e.printStackTrace(); } return bitmap; }

bitmap与byte[]之间相互转换

Android 图片压缩,bitmap与byte[]之间相互转换,Bitmap转String:Android 图片压缩,Bitmap旋转,bitmap与byte[]之间相互转换,Bitmap与String互转_meixi_android的博客-CSDN博客_android mipmap转bitmap

 bug在线交流:扣Q   1085220040

最后

以上就是虚拟鞋子最近收集整理的关于Android 将图片网址url转化为bitmap,drawable转bitmap,file转bitmap,bitmap转file,Bitmap转String,Uri转Bitmap的全部内容,更多相关Android内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(110)

评论列表共有 0 条评论

立即
投稿
返回
顶部