android加载图片并在上面画图
来源:互联网 发布:如何加盟淘宝店 编辑:程序博客网 时间:2024/05/24 15:38
package com.example.fingerdraw;import java.io.FileNotFoundException;import java.io.OutputStream;import android.app.Activity;import android.content.ContentValues;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.Bitmap.CompressFormat;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore.Images.Media;import android.view.Display;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnTouchListener;import android.widget.Button;import android.widget.ImageView;import android.widget.Toast;public class MainActivity extends Activity implements OnTouchListener, OnClickListener { private ImageView image; private Paint paint; private Canvas canvas; private Bitmap bitmap; private Bitmap alterBitmap; private Button choose; private Button save; private final static int RESULT = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image = (ImageView) findViewById(R.id.image); choose = (Button) findViewById(R.id.chooseButton); save=(Button)findViewById(R.id.saveButton); /* * bitmap = Bitmap.createBitmap(getWindowManager().getDefaultDisplay() * .getWidth(), getWindowManager().getDefaultDisplay().getHeight(), * Bitmap.Config.ARGB_8888); canvas = new Canvas(bitmap);// 画板 paint = * new Paint();// 画刷 paint.setColor(Color.BLUE); * image.setImageBitmap(bitmap); */ image.setOnTouchListener(this); choose.setOnClickListener(this); save.setOnClickListener(this); } private float downx = 0; private float downy = 0; private float upx = 0; private float upy = 0; public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: downx = event.getX(); downy = event.getY(); break; case MotionEvent.ACTION_MOVE: // 路径画板 upx = event.getX(); upy = event.getY(); canvas.drawLine(downx, downy, upx, upy, paint); image.invalidate(); downx = upx; downy = upy; break; case MotionEvent.ACTION_UP: // 直线画板 upx = event.getX(); upy = event.getY(); canvas.drawLine(downx, downy, upx, upy, paint); image.invalidate();// 刷新 break; default: break; } return true; } public void onClick(View arg0) { if(arg0==choose){ Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(intent, RESULT); }else if(arg0==save){ //保存画好的图片 if(alterBitmap!=null){ try { Uri imageUri=getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues()); OutputStream outputStream=getContentResolver().openOutputStream(imageUri); alterBitmap.compress(CompressFormat.PNG, 90, outputStream); Toast.makeText(getApplicationContext(), "save!", Toast.LENGTH_SHORT).show(); } catch (FileNotFoundException e) { e.printStackTrace(); } } } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { Uri imageFileUri = data.getData(); Display display = getWindowManager().getDefaultDisplay(); float dw = display.getWidth(); float dh = display.getHeight(); try { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; bitmap = BitmapFactory.decodeStream(getContentResolver() .openInputStream(imageFileUri), null, options); int heightRatio = (int) Math.ceil(options.outHeight / dh); int widthRatio = (int) Math.ceil(options.outWidth / dw); if (heightRatio > 1 && widthRatio > 1) { if (heightRatio > widthRatio) { options.inSampleSize = heightRatio; } else { options.inSampleSize = widthRatio; } } options.inJustDecodeBounds = false; bitmap = BitmapFactory.decodeStream(getContentResolver() .openInputStream(imageFileUri), null, options); alterBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig()); canvas = new Canvas(alterBitmap); paint = new Paint(); paint.setColor(Color.GREEN); paint.setStrokeWidth(10); Matrix matrix = new Matrix(); canvas.drawBitmap(bitmap, matrix, paint); image.setImageBitmap(alterBitmap); image.setOnTouchListener(this); } catch (FileNotFoundException e) { e.printStackTrace(); } } }}
效果:
- android加载图片并在上面画图
- 安卓 加载图片并在上面画图
- Android-从图库中加载图片到屏幕并在上面画图
- Android画图并保存图片
- Android画图并保存图片
- Android画图并保存图片
- Android画图并保存图片
- 继承SurfaceView Runnable android在现有图片上面继续画图(保留上次画的和不保留上次的)
- Android画图并保存图片到本地
- 创建DC画布并在上面画图并将结果缩放到一个按钮上显示
- Android网络图片显示在ImageView 上面
- Android网络图片显示在ImageView上面
- 为对话框加载背景图片并在上面输出文本
- android canvas实现在图片上画图
- iOS 数目不定的图片加载在页面上面
- Android HorizontalScrollView 水平滑动 在listview上面动态添加图片
- Android图片上面放图片
- Android网络加载图片并滚动显示
- 最深层了解虚表 ida
- UIActionSheet 按钮不响应点击事件的解决方法
- 关于文本转语音的文章,记录以下以备使用
- C++数据抽象和问题求解(第6版)
- cocos2d-x 游戏开发工具集合
- android加载图片并在上面画图
- Windows Phone 开发有用链接
- 编程学习
- mysql与postgresql比较(借鉴)
- 输出参数
- 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
- python 学习笔记 1 -- 基础篇
- adb源码路径
- pcap2sipp使用介绍