android拷贝图片

时间: 2015-02-08 15:55 栏目: Android 浏览: 11129 赞: 812 踩: 2 字体:

以下为本篇文章全部内容:

android拷贝图片.gif

很多人可能不知道为什么要拷贝图片,拷贝图片不就是拿一张图片复制粘贴吗?可是在android里面却没有那么简单,那我们在安卓里面为什么要生成一张图片呢,这很简单,就拿让广大男网友频频被欺骗的神器。美图秀秀就是一个典型的使用了拷贝,为什么要拷贝呢,我们在对图片进行编辑的时候,是不对原图编辑的,我们会拷贝一张一模一样的图片来进行编辑,因此我们就用到来图片拷贝技术。下面注释部分是所使用到的知识点。以下代码实现上图所示功能,当点击复制图片的时候会拷贝一张新图片出来。

/*

 * 拷贝一张图片

 * 知识点:

 * BitmapFactory 获取图片创建位图

 * 常用方法

 * BitmapFactory.decodeResource(Resources res, int id)//从一个资源获取位图

 * 参数1:资源路径

 * 参数2:资源id

 *  Bitmap 操作位图文件

 *  常用方法

 *  createBitmap(int width, int height, Config config)//创建一个位图

 *  参数1:位图的宽

 *  参数2:位图的高

 *  参数3:位图的配置信息

 *  setPixel(int x, int y, int color)//设置位点颜色

 *  参数1:水平方向

 *  参数2:垂直方向

 *  参数3:颜色

 *  Canvas 画板

 *  常用方法

 *  drawBitmap(Bitmap bitmap, Matrix matrix, Paint paint)//在画板上画出图像

 *  参数1:原图的位图

 *  参数2:缩放比例

 *  参数3:画笔信息

 *  Paint 画笔

 *  常用方法:

 *  setColor(int color)//设置画笔颜色

 *  Matrix 缩放比例

 *  常用方法

 *  setScale(float sx, float sy)//图片缩小放大

 *  参数1:水平方向

 *  参数2:垂直方向

 *  setRotate(float degrees, float px, float py)//图片旋转,默认从左上角开始旋转,如果需要从图片中心开始就设置水平位置/2,垂直位置/2

 *  参数1:旋转度数

 *  参数2:水平位置

 *  参数3:垂直位置

 *  postTranslate(float dx, float dy)//位移移动图片的位置

 *  参数1:水平方向

 *  参数2:垂直方向

 */

java代码:

public class MainActivity extends Activity {
	private ImageView img1,img2;
	private Bitmap bit,bt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取页面控件
        img1 = (ImageView) findViewById(R.id.img1);
        img2 = (ImageView) findViewById(R.id.img2);
        //从资源获取一张图片获取一个位图
        bt = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
        //给img1设置图片
        img1.setImageBitmap(bt);
        //创建一个位图
        bit = Bitmap.createBitmap(bt.getWidth(), bt.getHeight(), bt.getConfig());
    }
    
    public void click(View view) {
    	//根据创建的位图属性创建一个一样属性的画板
		Canvas canvas = new Canvas(bit);
		//创建画笔
		Paint paint = new Paint();
		//设置画笔背景颜色
		paint.setColor(Color.BLACK);
		//画画操作
		Matrix m = new Matrix();
 		//画出图像
		canvas.drawBitmap(bt,m,paint);
		//给img2设置创建出来的位图
		img2.setImageBitmap(bit);
    }
}

xml视图代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="click"
        android:text="复制图片" />

    <ImageView
        android:id="@+id/img1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ImageView
        android:id="@+id/img2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

如果大家有什么疑问可以加我QQ327388905进行解答