android图像绘制--获取本地图片或拍照图片代码

 更新时间:2016年9月20日 20:00  点击:1984
本文章来给各位朋友介绍一个android图像绘制--获取本地图片或拍照图片代码,有需要了解的朋友可以参考参考。

从SD卡中获取图片资源,或者拍一张新的图片。
  注释:拍照获取的话,可以指定图片的保存地址,在此不说明。
  从SD卡中获取图片资源,或者拍一张新的图片。
  先贴代码
  获取图片:
  注释:拍照获取的话,可以指定图片的保存地址,在此不说明。
  

 代码如下 复制代码
CharSequence[] items = {"相册", "相机"};
  new AlertDialog.Builder(this)
  .setTitle("选择图片来源")
  .setItems(items, new OnClickListener() {
  public void onClick(DialogInterface dialog, int which) {
  if( which == SELECT_PICTURE ){
  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  intent.addCategory(Intent。CATEGORY_OPENABLE);
  intent.setType("image/*");
  startActivityForResult(Intent。createChooser(intent, "选择图片"), SELECT_PICTURE);
  }else{
  Intent intent = new Intent(MediaStore。ACTION_IMAGE_CAPTURE);
  startActivityForResult(intent, SELECT_CAMER);
  }
  }
  })
  .create().show();
  CharSequence[] items = {"相册", "相机"};
  new AlertDialog.Builder(this)
  .setTitle("选择图片来源")
  .setItems(items, new OnClickListener() {
  public void onClick(DialogInterface dialog, int which) {
  if( which == SELECT_PICTURE ){
  Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
  intent.addCategory(Intent.CATEGORY_OPENABLE);
  intent.setType("image/*");
  startActivityForResult(Intent.createChooser(intent, "选择图片"), SELECT_PICTURE);
  }else{
  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
  startActivityForResult(intent, SELECT_CAMER);
  }
  }
  })
  .create().show();

处理图片,方法一,直接处理返回图片:
  注释:
  1、网上有说明,直接处理返回的图片是被系统压缩过的,不过自己在测试的过程并没有区别;
  2、如果用户不断的重新获取图片的话,必须把现在的Bmp内存释放,否则会报错! bmp.recycle()。

 代码如下 复制代码

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(resultCode == RESULT_OK){
  //选择图片
  Uri uri = data.getData();
  ContentResolver cr = this.getContentResolver();
  try {
  if(bmp != null)//如果不释放的话,不断取图片,将会内存不够
  bmp.recycle();
  bmp = BitmapFactory.decodeStream(cr.openInputStream(uri));
  } catch (FileNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  System.out.println("the bmp toString: " + bmp);
  imageSV.setBmp(bmp);
  }else{
  Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();
  }
  }
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(resultCode == RESULT_OK){
  //选择图片
  Uri uri = data.getData();
  ContentResolver cr = this.getContentResolver();
  try {
  if(bmp != null)//如果不释放的话,不断取图片,将会内存不够
  bmp.recycle();
  bmp = BitmapFactory.decodeStream(cr.openInputStream(uri));
  } catch (FileNotFoundException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  System.out.println("the bmp toString: " + bmp);
  imageSV.setBmp(bmp);
  }else{
  Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();
  }
  }

  

处理图片,方法二,获得图片的地址再处理:

 代码如下 复制代码

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(resultCode == RESULT_OK){
  Uri uri = data.getData();
  String [] proj={MediaStore.Images.Media.DATA};
  Cursor cursor = managedQuery( uri,
  proj,                 // Which columns to return
  null,       // WHERE clause; which rows to return (all rows)
  null,       // WHERE clause selection arguments (none)
  null);                 // Order-by clause (ascending by name)
  int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  cursor.moveToFirst();
  String path = cursor.getString(column_index);
  bmp = BitmapFactory.decodeFile(path);
  System.out.println("the path is :" + path);
  }else{
  Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();
  }
  }
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if(resultCode == RESULT_OK){
  Uri uri = data.getData();
  String [] proj={MediaStore.Images.Media.DATA};
  Cursor cursor = managedQuery( uri,
  proj,                 // Which columns to return
  null,       // WHERE clause; which rows to return (all rows)
  null,       // WHERE clause selection arguments (none)
  null);                 // Order-by clause (ascending by name)
  int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  cursor.moveToFirst();
  String path = cursor.getString(column_index);
  bmp = BitmapFactory.decodeFile(path);
  System.out.println("the path is :" + path);
  }else{
  Toast.makeText(SetImageActivity.this, "请重新选择图片", Toast.LENGTH_SHORT).show();
  }
  }

本文章给大家介绍一款Android学习笔记之裁剪图片代码,有需要的朋友可参考参考。

在Android平台下开发处理图片裁剪的应用,如果感觉实现的逻辑比较麻烦,比如说需要写类此Win32下的橡皮筋类 CRectTracker来设置裁剪区域,这里给大家一个最简单可靠的方法,通过下面的Intent调用系统的Camera程序的裁剪功能实现图片修剪。

java

 代码如下 复制代码
Intent intent = new Intent("com.android.camera.action.CROP"); 
intent.setClassName("com.android.camera", "com.android.camera.CropImage");

 

 不过这里提醒大家可能会出现无法找到Activity的android.content.ActivityNotFoundException异常,这是由于Android内部的gallery和camera 都有处理,可以尝试另一种URI,com.android.gallery的com.android.camera.CropImage,在setClassName时,具体的代码为

java

 代码如下 复制代码

final Intent intent = new Intent("com.android.camera.action.CROP");
intent.setClassName("com.android.camera", "com.android.camera.CropImage");
intent.setData(Uri.fromFile(mFile));
intent.putExtra("outputX", width);
intent.putExtra("outputY", height);
intent.putExtra("aspectX", width);
intent.putExtra("aspectY", height);
intent.putExtra("scale", true);
intent.putExtra("noFaceDetection", true);
intent.putExtra("output", Uri.parse("file:/" + mFile.getAbsolutePath()));
startActivityForResult(intent, REQUEST_CROP_IMAGE);

本文章给大家介绍一篇关于android中利用ImageView 图片循环播放代码,功能由三个文件组成一个是xml,一个是主处理文件,另一个是预览文件了,有需要了解的朋友可参考。

xml

 代码如下 复制代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:id="@+id/linearLayout" >
 
</LinearLayout>

主文件:

 代码如下 复制代码

public class picBarActivity extends Activity{
        private LinearLayout linearLayout;
        private picBar myView;
         
        @Override
        protected void onCreate(Bundle savedInstanceState) {
                // TODO Auto-generated method stub
                super.onCreate(savedInstanceState);
                setContentView(R.layout.pic_progress);
                 
                linearLayout = (LinearLayout)this.findViewById(R.id.linearLayout);
                myView = new picBar(this);
                linearLayout.addView(myView);
        }
}

View文件:

 代码如下 复制代码


public class picBar extends View{          
 
        int COMPONENT_WIDTH;//控件的宽度  
        int COMPONENT_HEIGHT;//控件的高度  
        boolean initflag = false;//是否已经初始化图片  
        Bitmap[] bmp;//用来存放图片的数组  
        int currIndex = 0;//当前播放图片的ID  
        int[] bitmapId;//图片编号ID  
        boolean workFlag = true;//播放图片的线程标识位  
 
        public picBar(Context context) {
                super(context);
                 
                //首先,要播放图片,就先要有图片,那就先给各个图片编号吧,这里的图片资源存放在了res下的drawable文件夹下了  
                bitmapId =new int[]{R.drawable.loading1_03, R.drawable.loading2_03, R.drawable.loading3_03}; 
                 
                //好了,图片的编号现在已经搞定了,接下来该干什么呢?对,应该将资源里的图片塞进Bitmap数组了,那么我们先来确定将要播放的图片的数量,即Bitmap数组的长度
                bmp = new Bitmap[bitmapId.length];//这里不要直接将数值赋给bmp,因为我们可能会不定期地更换图片资源,这样我们就要修改多处代码,而我们这样根据  
 
                //图片的ID来确定图片的数量,以减少不必要的麻烦,下面开始初始化图片,我们将初始化图片放在一个函数里  
                initBitmap();//图片初始化完毕  
 
                //图片初始化完毕了,接下来我们要做的就是播放图片了,但是播放图片之前,我们有一个问题,就是怎样让图片实现循环播放?这里我们另开一个新的线程来定时更改  
 
                //要播放的图片的ID,以实现图片的循环播放,要实现循环播放图片的功能,我们需要覆写onDraw函数,首先,我们来新开一个线程  
 
                new Thread(){  
 
                        //重写run方法  
                        public void run(){
                                // TODO Auto-generated method stub  
                                while(workFlag)//一直执行这个循环(死循环)  
                                {  
                                        currIndex = (currIndex+1)%bitmapId.length;//更改图片的ID  
                                        picBar.this.postInvalidate();//刷新屏幕,导致屏幕重绘  
                                        try
                                        {  
                                                Thread.sleep(3000);//到此处暂停3秒钟,然后继续执行run函数,即实现每隔3秒钟刷新屏幕一次  
                                        } 
                                        catch (InterruptedException e)   
                                        {  
                                                // TODO Auto-generated catch block  
                                                e.printStackTrace();  
                                        } 
                                } 
                        } 
                }.start(); 
        }
 
        //初始化图片  
 
        public void initBitmap()  
 
        {  
 
                //获取资源图片  
 
                Resources res = this.getResources();  
 
                for(int i=0;i<bitmapId.length;i++){  
                        bmp<I> = BitmapFactory.decodeResource(res, bitmapId<I>);  
                } 
        } 
 
        //覆写onDraw方法  
        @Override
        protected void onDraw(Canvas canvas)   
        {  
                // TODO Auto-generated method stub  
                super.onDraw(canvas);  
                if(!initflag)//检查是偶已经获取控件的宽和高,如果没有,那么就获取控件的宽和高  
                {  
                        COMPONENT_WIDTH = this.getWidth();  
                        COMPONENT_HEIGHT = this.getHeight();  
                        initflag = true;  
                } 
                Paint p = new Paint();
                canvas.drawBitmap(bmp[currIndex], 0, 0, p);//绘制图片  
        } 
 
}

本文章来给大家介绍关于Android学习笔记之ImageView显示图片,在于android中ImageView是Android程序中经常用到的组件,它将一个图片显示到屏幕上。
 代码如下 复制代码


public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myimage);
ImageView image1 = (ImageView) findViewById(R.myImage.image);
//Bitmap bitmap = getLoacalBitmap("/aa/aa.jpg"); //从本地取图片
Bitmap bitmap =
getHttpBitmap("hpath.jpg");
//从网上取图片
image1 .setImageBitmap(bitmap); //设置Bitmap
}

/**
* 加载本地图片
* http://www.111cn.net
* @param url
* @return
*/
public static Bitmap getLoacalBitmap(String url) {
try {
FileInputStream fis = new FileInputStream(url);
return BitmapFactory.decodeStream(fis);
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
}
}

/**
* 从服务器取图片
*http://www.111cn.net
* @param url
* @return
*/
public static Bitmap getHttpBitmap(String url) {
URL myFileUrl = null;
Bitmap bitmap = null;
try {
Log.d(TAG, url);
myFileUrl = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
conn.setConnectTimeout(0);
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
return bitmap;
}

ImageView 无法setImageBitmap,不显示图片解决办法

以下是handler

 代码如下 复制代码
handler.post(new Runnable() {
                        @Override
                        public void run() {
                                playAdver();
                        }
                });

以下是playAdver()方法,主要是显示图片

 代码如下 复制代码

        private void playAdver() {
                for (int i = 0; i < advertisementsList.size(); i++) {
                        advertisement = advertisementsList.get(i);
                        fileName = advertisement.getName();
                        index = advertisement.getName().indexOf(".");
                        String postfix = fileName.substring(index, fileName.length());
                        time = advertisement.getTime() * 100;
                         if (postfix.compareToIgnoreCase(".jpg") == 0
                                        || postfix.compareToIgnoreCase(".png") == 0) {
                                adverImage.setVisibility(View.VISIBLE);
                                adverImage.setImageBitmap(BitmapFactory.decodeFile(fileName));
                                try {
                                        Thread.sleep(time);
                                } catch (InterruptedException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                        }
                }
        }

执行了adverImage.setImageBitmap(BitmapFactory.decodeFile(fileName));但是在真机上不现实图片,为什么?
因为我是在主线程里面执行的,故不会显示,以解决

本文章为安卓开发者入门者介绍关于Android Debug Bridge (ADB)的使用方法,有需要学习的朋友可进入参考。

 

Android系统调试工具——ADB

Android Debug Bridge是个多功能的工具,可以管理设备上的执行状况。
即ADB是管理模拟器的一个工具。

包括下列三个部分:

客户端程序(Client):在开发环境上运行,也可以通过命令行模式shell接口执行adb命令来操作客户端程序。其他Android工具如开发工具ADT或调试监控系统DDMS都可以创建一个adb客户端。

服务器程序(Server):在开发环境的后台运行,服务器程序负责管理介于客户端程序和守护进程程序的通信沟通。
守护进程程序(Daemon):在实际硬件设备或虚拟设备的后台运行。
adb命令位于安装路径下的platform-tools路径中,把这个路径加在环境变量PATH中就可以在其他目录下使用adb命令。

adb命令的标准格式

adb [-d|-e|-s <serialNumber>] <command>
这是adb命令的标准格式,当你正在执行的仿真器有多个时,要加上仿真器序号来区别:

使用“-s <serialNumber>”选项参数;
使用“-d”选项参数,adb命令只会送到连接USB的实际硬设备;
使用“-e”选项参数,adb命令只会送到Android仿真器。

后面<command>是必要的命令。

安装与卸载应用程序apk文件

安装:
adb [-s <serialNumber>] install <path_to_apk>

范例:安装helloWorld.apk到Android仿真器序列号是5556的虚拟设备上:

 adb –s emulator-5556 install helloWorld.apk
 adb install helloWorld.apk

使用adb install安装apk组件程序时,安装在Android仿真器上的apk组件会被放在Android系统目录的/data/app下,这个目录下的应用程序文件名就是写程序时设置的Package name

卸载:

 adb [-s <serialNumber>] uninstall <package>
范例:

adb –s emulator-5556 uninstall com.example.android.helloWorld.apk
adb uninstall com.example.android.helloWorld.apk

注意安装是接apk文件路径名称,而移除是接package名称。

手动删除:

  adb shell
  cd data/app
  rm app.apk

Android操作系统命令行模式,使用shell命令

  执行

  adb shell

  可以进入Android操作系统命令行模式,如此一来你就可以管理和查询Android操作系统的目录和执行相关的命令。

  因为Android操作系统是Linux操作系统的一种,所以shell命令和Linux操作系统是相同的,例如ls命令显示文件目录,cd命令更改文件目录,mkdir命令创建目录,rmdir命令删除目录,rm命令删除文件,mv命令移动文件。

  进入Android操作系统命令行模式后,要离开回到控制台窗口,可以使用exit命令。

上传文件到/sdcard或自/sdcard下载文件(复制文件)

  上传,即从系统复制文件到设备:
  adb push <local> <remote>
  如:adb push d:test.txt /sdcard/
  下载,即从设备复制文件到系统:
  adb pull <remote> <local>
  如:adb pull /sdcard/test.txt d:/

发布端口

  可以设置任意的端口号,作为主机向模拟器或设备的请求端口。如:
  adb forward tcp:5555 tcp:8000

搜索/等待模拟器、设备实例

  取得当前运行的模拟器,设备的实例列表及每个实例的状态|等待正在运行的设备。
  adb devices
  adb wait-for-device

 

查看Bug报告

  adb bugreport

记录无线通讯日志

  adb shell
  logcat –b radio


获取设备ID和序列号

  adb get-product

  adb get-serialno

访问数据库SQLite3

  adb shell
  sqlite3

[!--infotagslink--]

相关文章

  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19
  • PHP成员变量获取对比(类成员变量)

    下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • php 获取用户IP与IE信息程序

    php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • Photoshop古装美女图片转为工笔画效果制作教程

    今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • php获取一个文件夹的mtime的程序

    php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • 如何获取网站icon有哪些可行的方法

    获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
  • jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮

    jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13
  • jquery如何获取元素的滚动条高度等实现代码

    主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • jquery获取div距离窗口和父级dv的距离示例

    jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • Jquery 获取指定标签的对象及属性的设置与移除

    1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20