android缩放图片添加文字信息

来源:互联网 发布:淘宝查看vip等级 编辑:程序博客网 时间:2024/06/08 04:03

很多时候就需要什么图片上添加水印或者文字信息之类,这里就是在可缩放动态的图片上添加文字信息,直接上代码:

public class TieXieFenBuActivty extends Activity {/* * http://blog.csdn.net/generallizhong */// 自定义变量private Button openImageBn; // 打开图片private Bitmap bmp; // 原始图片private TextView pathText; // 路径TextViewprivate String path; // 存储图片路径private ImageView imageShow; // 显示图片private final int IMAGE_CODE = 0; // 打开图片// 触屏缩放图片private static final int NONE = 0; // 初始状态private static final int DRAG = 1; // 拖动private static final int ZOOM = 2; // 缩放private int mode = NONE; // 当前事件private float oldDist;private PointF startPoint = new PointF();private PointF middlePoint = new PointF();private Matrix matrix = new Matrix();private Matrix savedMatrix = new Matrix();// 新增按钮private Button wordAddBn; // 添加文字private Button changeImageBn; // 缩放图片private Button drawImageBn; // 绘制图片// 图片处理时显示备份private Bitmap alteredBitmap; // 图片private Canvas canvas; // 画布private Paint paint; // 画刷private RelativeLayout layout;// 标识变量 1-显示图片 2-添加文字 3-缩放图片 4-画图private int flagOnTouch = 0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);openImageBn = (Button) findViewById(R.id.button1);pathText = (TextView) findViewById(R.id.textView1);imageShow = (ImageView) findViewById(R.id.imageView1);try {bitmap();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}// 触屏缩放图片监听 注:XML中修改android:scaleType="matrix"imageShow.setOnTouchListener(new OnTouchListener() {// 设置两个点 按下坐标(downx, downy)和抬起坐标(upx, upy)float downx = 0;float downy = 0;float upx = 0;float upy = 0;// 触摸事件@Overridepublic boolean onTouch(View v, MotionEvent event) {ImageView view = (ImageView) v;// 显示图片if (flagOnTouch == 1) {return true;}// 图片缩放if (flagOnTouch == 3) {switch (event.getAction() & MotionEvent.ACTION_MASK) {case MotionEvent.ACTION_DOWN: // 手指按下savedMatrix.set(matrix);startPoint.set(event.getX(), event.getY());mode = DRAG;break;case MotionEvent.ACTION_UP:case MotionEvent.ACTION_POINTER_UP:mode = NONE;break;case MotionEvent.ACTION_POINTER_DOWN:oldDist = spacing(event); // 如果两点距离大于10 多点模式if (oldDist > 10f) {savedMatrix.set(matrix);midPoint(middlePoint, event);mode = ZOOM;}break;case MotionEvent.ACTION_MOVE:if (mode == DRAG) { // 拖动matrix.set(savedMatrix);matrix.postTranslate(event.getX() - startPoint.x,event.getY() - startPoint.y);} else if (mode == ZOOM) { // 缩放float newDist = spacing(event);if (newDist > 10f) {matrix.set(savedMatrix);float scale = newDist / oldDist;matrix.postScale(scale, scale, middlePoint.x,middlePoint.y);}}break;} // end switchview.setImageMatrix(matrix);return true;}// 图片文字添加else if (flagOnTouch == 2) {return true;}else {return false;}} // end onTouch// 两点距离private float spacing(MotionEvent event) {float x = event.getX(0) - event.getX(1);float y = event.getY(0) - event.getY(1);return FloatMath.sqrt(x * x + y * y);}// 两点中点private void midPoint(PointF point, MotionEvent event) {float x = event.getX(0) + event.getX(1);float y = event.getY(0) + event.getY(1);point.set(x / 2, y / 2);}});// 缩放图片 点击按钮"缩放"changeImageBn = (Button) findViewById(R.id.button3);changeImageBn.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {flagOnTouch = 3;}});// 添加水印文字wordAddBn = (Button) findViewById(R.id.button2);layout = (RelativeLayout) findViewById(R.id.Content_Layout);AddText();}
//这里是文字添加的方法public void AddText() {flagOnTouch = 2;// 添加文字Bitmap bmpTemp = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(),bmp.getConfig());Canvas cv = new Canvas(bmpTemp);Canvas cv1 = new Canvas(bmpTemp);Paint p = new Paint();Typeface font = Typeface.create("宋体", Typeface.BOLD);p.setColor(Color.BLUE);p.setTypeface(font);p.setTextSize(40);cv.drawBitmap(bmp, 0, 0, p);cv1.drawBitmap(bmp, 0, 0, p);imageShow.setImageBitmap(bmpTemp);cv.drawText("铁鞋5只", 40, 40, p);cv1.drawText("铁鞋10只", 100, 100, p);cv.save(Canvas.ALL_SAVE_FLAG);cv.restore();}
//这里是获取图片资源处理public void bitmap() {// Uri imageFileUri = data.getData();DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(dm);int width = dm.widthPixels; // 手机屏幕水平分辨率int height = dm.heightPixels; // 手机屏幕垂直分辨率// 标识变量=1 图片显示flagOnTouch = 1;// 载入图片尺寸大小没载入图片本身 trueBitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();bmpFactoryOptions.inJustDecodeBounds = true;int heightRatio = (int) Math.ceil(bmpFactoryOptions.outHeight/ (float) height); // outHeight图像高int widthRatio = (int) Math.ceil(bmpFactoryOptions.outWidth/ (float) width); // outWidth图像宽// inSampleSize表示图片占原图比例 =1表示原图if (heightRatio > 1 && widthRatio > 1) {if (heightRatio > widthRatio) {bmpFactoryOptions.inSampleSize = heightRatio;} else {bmpFactoryOptions.inSampleSize = widthRatio;}}Resources r = TieXieFenBuActivty.this.getResources();//获取资源文件图片,也可选择手机内图片bmp = BitmapFactory.decodeResource(r, R.drawable.tp);Bitmap newb = Bitmap.createBitmap(300, 300, Config.ARGB_8888);imageShow.setImageBitmap(bmp);}
没有太多代码,如有不足之处请指正,一起学习

需要源代码请点击源码




原创粉丝点击