栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

android 实现在照片上绘制涂鸦的方法

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android 实现在照片上绘制涂鸦的方法

这个应该是简易版的美图秀秀(小伙伴们吐槽:你这也叫简易版的??我们看着怎么不像啊……)。好吧,只是在图片上绘制涂鸦,然后保存。

一、选择图片

这个道长有必要说一下,在绘制涂鸦时,笔画会根据设置ImageView的大小和屏幕的尺寸(不是像素)产生误差。这个道长暂时还没有找到解决方法,只是规避了一下。

把ImageView设置为全屏,布局文件代码如下




 

 

  

根据机型设置缩放比例

  switch (model){
   case "MI 4LTE":
    scale = 1.1f;
    break;
   case "HUAWEI NXT-AL10":
    scale = 1.5f;
    break;
  }

效果图如下

二、绘制涂鸦

实现代码如下:

 @Override
 public boolean onTouch(View view, MotionEvent motionEvent) {
  int action = motionEvent.getAction();
  switch (action) {
   case MotionEvent.ACTION_CANCEL:
    break;
   case MotionEvent.ACTION_DOWN:
    downX = motionEvent.getX() * scale;
    downY = motionEvent.getY() * scale;
    break;
   case MotionEvent.ACTION_UP:
    upX = motionEvent.getX() * scale;
    upY = motionEvent.getY() * scale;
    canvas.drawLine(downX, downY, upX, upY, paint);
    iv_drawpicture.invalidate();
    break;
   case MotionEvent.ACTION_MOVE:
    upX = motionEvent.getX() * scale;
    upY = motionEvent.getY() * scale;
    canvas.drawLine(downX, downY, upX, upY, paint);
    iv_drawpicture.invalidate();
    downX = upX;
    downY = upY;
    break;
   default:
    break;
  }
  return true;
 }

效果图如下:

三、保存绘制涂鸦后的图片

实现代码如下:

try {

  Uri imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues());
  OutputStream os = getContentResolver().openOutputStream(imageUri);

  //compress方法将图片转换成JPG或者PNG格式
  drawBitmap.compress(Bitmap.CompressFormat.JPEG, 90, os);
  Toast.makeText(this, "Saved:" + imageUri.toString(), Toast.LENGTH_LONG).show();
 } catch (FileNotFoundException e) {
  e.printStackTrace();
 }

四、擦除涂鸦笔迹

实现代码如下:

 drawBitmap = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());
 canvas = createCanvas(drawBitmap);
 paint = createPaint();
 canvas.drawBitmap(bmp, 0, 0, paint);
 iv_drawpicture.setImageBitmap(drawBitmap);
 iv_drawpicture.setonTouchListener(this);

在照片上绘制涂鸦暂时就到这里,功能比较单一。

以上这篇android 实现在照片上绘制涂鸦的方法就是小编分享给大家的全部内容了,希望这篇文章能够为小伙伴们提供一些帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/155441.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号