首页 技术 正文
技术 2022年11月9日
0 收藏 326 点赞 3,670 浏览 3075 个字

通过网络地址获取网络图片,点击下载将图片显示出来,然后点击图片将图片保存到本地。

首先需要在manifest上添加一些权限:

  1. <!– 访问网络的权限 –>
  2. <uses-permission android:name=”android.permission.INTERNET” />
  3. <!– 文件读取的权限 –>
  4. <uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE”/>
  5. <!– 向SD卡中创建或者删除的权限。 –>
  6. <uses-permission android:name=”andorid.permission.MONUN_UNMOUNT_FILESYSTEMS”/>
    1. package com.xjw.test;
    2. import java.io.File;
    3. import java.io.FileOutputStream;
    4. import java.io.InputStream;
    5. import java.net.HttpURLConnection;
    6. import java.net.URL;
    7. import android.os.AsyncTask;
    8. import android.os.Bundle;
    9. import android.os.Environment;
    10. import android.os.Handler;
    11. import android.os.Message;
    12. import android.app.Activity;
    13. import android.graphics.Bitmap;
    14. import android.graphics.BitmapFactory;
    15. import android.view.View;
    16. import android.view.View.OnClickListener;
    17. import android.widget.Button;
    18. import android.widget.ImageView;
    19. import android.widget.Toast;
    20. public class MainActivity extends Activity implements OnClickListener{
    21. Button content;
    22. ImageView image;
    23. Bitmap bitmap;
    24. protected void onCreate(Bundle savedInstanceState) {
    25. super.onCreate(savedInstanceState);
    26. setContentView(R.layout.activity_main);
    27. content=(Button)findViewById(R.id.content);
    28. image=(ImageView)findViewById(R.id.image);
    29. content.setOnClickListener(this);;
    30. image.setOnClickListener(this);;
    31. }
    32. /**
    33. * 获取网络图片
    34. * @param imageurl 图片网络地址
    35. * @return Bitmap 返回位图
    36. */
    37. public Bitmap GetImageInputStream(String imageurl){
    38. URL url;
    39. HttpURLConnection connection=null;
    40. Bitmap bitmap=null;
    41. try {
    42. url = new URL(imageurl);
    43. connection=(HttpURLConnection)url.openConnection();
    44. connection.setConnectTimeout(6000); //超时设置
    45. connection.setDoInput(true);
    46. connection.setUseCaches(false); //设置不使用缓存
    47. InputStream inputStream=connection.getInputStream();
    48. bitmap=BitmapFactory.decodeStream(inputStream);
    49. inputStream.close();
    50. } catch (Exception e) {
    51. e.printStackTrace();
    52. }
    53. return bitmap;
    54. }
    55. public void onClick(View v) {
    56. switch (v.getId()) {
    57. case R.id.content:
    58. //加入网络图片地址
    59. new Task().execute(“https://img.zhankr.net/gfk1kfjabre65156.jpg”);
    60. break;
    61. case R.id.image:
    62. //点击图片后将图片保存到SD卡跟目录下的Test文件夹内
    63. SavaImage(bitmap, Environment.getExternalStorageDirectory().getPath()+”/Test”);
    64. Toast.makeText(getBaseContext(), “图片保存”, Toast.LENGTH_SHORT).show();
    65. break;
    66. default:
    67. break;
    68. }
    69. }
    70. Handler handler=new Handler(){
    71. public void handleMessage(android.os.Message msg) {
    72. if(msg.what==0x123){
    73. image.setImageBitmap(bitmap);
    74. }
    75. };
    76. };
    77. /**
    78. * 异步线程下载图片
    79. *
    80. */
    81. class Task extends AsyncTask<String, Integer, Void>{
    82. protected Void doInBackground(String… params) {
    83. bitmap=GetImageInputStream((String)params[0]);
    84. return null;
    85. }
    86. protected void onPostExecute(Void result) {
    87. super.onPostExecute(result);
    88. Message message=new Message();
    89. message.what=0x123;
    90. handler.sendMessage(message);
    91. }
    92. }
    93. /**
    94. * 保存位图到本地
    95. * @param bitmap
    96. * @param path 本地路径
    97. * @return void
    98. */
    99. public void SavaImage(Bitmap bitmap, String path){
    100. File file=new File(path);
    101. FileOutputStream fileOutputStream=null;
    102. //文件夹不存在,则创建它
    103. if(!file.exists()){
    104. file.mkdir();
    105. }
    106. try {
    107. fileOutputStream=new FileOutputStream(path+”/”+System.currentTimeMillis()+”.png”);
    108. bitmap.compress(Bitmap.CompressFormat.JPEG, 100,fileOutputStream);
    109. fileOutputStream.close();
    110. } catch (Exception e) {
    111. e.printStackTrace();
    112. }
    113. }
    114. }
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,494
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295