以下为本篇文章全部内容:
很多人可能不知道为什么要拷贝图片,拷贝图片不就是拿一张图片复制粘贴吗?可是在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进行解答
总赞数量:18274
总踩数量:128087
文章数量:29