在 Android 上将画布保存为位图

2023-11-25

我在将画布的内容放入位图中遇到一些困难。当我尝试执行此操作时,文件大小约为 5.80KB,但它似乎完全是空的(每个像素都是“#000”)。

画布上绘制了一系列由手写形成的相互连接的线条。下面是我的视图的 onDraw。 (我知道它阻塞了 UI 线程/不好的做法/等等,但是我只需要让它工作)

谢谢。

@Override
protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas);

        if (IsTouchDown) {

            // Calculate the points
            Path currentPath = new Path();
            boolean IsFirst = true;
            for(Point point : currentPoints){
                if(IsFirst){
                    IsFirst = false;
                        currentPath.moveTo(point.x, point.y);
                    } else {
                        currentPath.lineTo(point.x, point.y);
                    }
                }

            // Draw the path of points
            canvas.drawPath(currentPath, pen);

            // Attempt to make the bitmap and write it to a file.
            Bitmap toDisk = null;
            try {

                // TODO: Get the size of the canvas, replace the 640, 480
                toDisk = Bitmap.createBitmap(640,480,Bitmap.Config.ARGB_8888);
                canvas.setBitmap(toDisk);
                toDisk.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("arun.jpg")));

            } catch (Exception ex) {


            }

        } else {

            // Clear the points
            currentPoints.clear();

        }
    }

我有类似的问题并且我已经有了解决方案。这是任务的完整代码/不要忘记android.permission.WRITE_EXTERNAL_STORAGE清单中的许可/

  public Bitmap saveSignature(){

      Bitmap  bitmap = Bitmap.createBitmap(this.getWidth(), this.getHeight(), Bitmap.Config.ARGB_8888);
      Canvas canvas = new Canvas(bitmap);
      this.draw(canvas); 

      File file = new File(Environment.getExternalStorageDirectory() + "/sign.png");

      try {
           bitmap.compress(Bitmap.CompressFormat.PNG, 100, new FileOutputStream(file));
      } catch (Exception e) {
           e.printStackTrace();
      }

      return bitmap;
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Android 上将画布保存为位图 的相关文章

随机推荐

  • HTML Purifier - 净化什么?

    我正在使用 HTML Purifier 来保护我的应用程序免受 XSS 攻击 目前 我正在净化所见即所得编辑器中的内容 因为这是唯一允许用户使用 XHTML 标记的地方 我的问题是 我是否应该在登录身份验证系统中的用户名和密码 或注册页面的
  • 在自定义编辑类型字段中添加多个输入元素

    有没有办法创建具有多个输入元素的自定义字段 我正在咨询文档创建单个输入元素非常简单 但我不太确定如何添加多个输入元素 以前有人走过这座桥吗 如果是这样 你是怎么做到的 这是一些示例代码 name Dimensions index Dimen
  • 在 BrowseFragment 中禁用行缩放/展开

    我还没有找到任何文档如何在将焦点从标题切换到 BrowseFragment 中的片段时禁用行缩放 倚背版本 24 2 0 BrowseFragment有一个功能enableMainFragmentScaling这部分解决了问题 图像现在具有
  • 如何查看是否点击同一个元素两次? jQuery

    如何检测用户是否点击同一个 div 我尝试过这个但没有成功 oldthis null var this this if oldthis this alert You clicked this last oldthis this 您无法比较
  • Laravel Auth::logout 未删除记住我的 cookie

    因此 我将会话的生命周期设置为两周 这样用户就不必多次登录或退出 然而今天我注意到一些事情 如果您注销 它会破坏您的会话 但会在您的浏览器上保留 记住我 cookie 这会导致问题 因为如果您在同一台计算机上切换帐户 8 10 次 您会收到
  • 事务中的 LAST_INSERT_ID() 可靠吗?

    我正在使用 mysql ado net C 这是我的问题 我知道 mysql 是并发的 但是我有文件数据 缩略图名称 和数据库数据 行 同步 如果我开始一笔交易 但因任何原因失败 这会是一个问题吗 如果我在两个核心上同时运行这段代码 它们会
  • 在iPhone App中如何检测设备的屏幕分辨率

    在 iPhone 应用程序中 在设备上运行App时如何检测运行App的设备的屏幕分辨率 CGRect screenBounds UIScreen mainScreen bounds 这将为您提供整个屏幕的分辨率 以点为单位 因此 iPhon
  • 异常处理模式

    这是我看到的一种常见模式 其中与异常相关的错误代码存储为静态最终整数 当创建要抛出的异常时 它是用这些代码之一以及错误消息构造的 这导致要捕获它的方法必须查看代码 然后决定操作过程 另一种选择似乎是为每个异常错误情况声明一个类 尽管相关异常
  • 在 Swing 应用程序中组织操作?

    我当前的应用程序有一个 JFrame 其中约有 15 个操作存储为 JFrame 中的字段 每个操作都是一个匿名类 其中一些非常长 将操作分解为它们自己的类 可能位于称为操作的子包中 是否很常见 如果不是 通常如何控制这种复杂性 Thank
  • 如何使用 mysql 二进制日志从删除数据库命令恢复?

    如何恢复使用 drop database 命令删除的 mysql 数据库 我可以访问二进制日志 这应该使这种类型的回滚成为可能 文档很糟糕 它暗示 DROP DATABASE 是可恢复的 但仅在我不熟悉的奇怪条件下http dev mysq
  • Flutter - 无线电动画未显示在 showDialog 上

    我正在尝试创建一个Radio in a showDialog 但是发生的动画Radio没有出现在showDialog 例如 当点击时foo2什么也没有发生 当你退出时showDialog然后回到它 foo2被选中 下面是代码和 gif 显示
  • C# 委托中的元帅 va_list

    我正在尝试用 c 来完成这项工作 C 标头 typedef void LogFunc const char format va list args bool Init uint32 version LogFunc log C 实现 stat
  • Java 同步和性能的一个方面

    我刚刚意识到我需要在某个方面同步大量数据收集代码 但性能是一个真正值得关注的问题 如果性能下降太多 我的工具就会被淘汰 我将分别写入 int 和 long 以及各种数组 ArrayList 和 Map 应用程序将有多个线程进行函数调用 这些
  • 如何使用 SASS 进行媒体查询?

    我已经通读了 SASS 文档 只能找到如何使用 scss 语法而不是 sass 语法进行媒体查询 sass 是具有严格的空白 没有大括号或分号的语法 如何使用 sass 语法进行媒体查询 media screen and min heigh
  • pcl::RANSAC 分割,获取云中的所有平面?

    我有一个点云库函数 可以检测点云中最大的平面 这很好用 现在 我想扩展此功能以分割云中的每个平面并将这些点复制到新的云中 例如 房间地板上有球体的场景将返回地板和墙壁 但不是球体 因为它不是平面的 如何扩展下面的代码以获得所有飞机 而不仅仅
  • 内部版本号中的分支名称

    我试图将分支名称放入内部版本号中 但找不到正确的参数 我正在使用内部版本号格式 teamcity build branch 0 它可以工作 但是当它尝试构建默认分支 dev 时 teamcity 将其命名为
  • 如何在 osgi 中从字节反序列化对象

    在我的 osgi 应用程序中 我有三个包 travel api table api and utils travel api依赖于取决于table api这取决于utils 注意travel api不直接依赖于utils 我使用 aQute
  • x86 上哪个写屏障更好:lock+addl 或 xchgl?

    Linux 内核使用lock addl 0 0 esp 作为写屏障 而 RE2 库使用xchgl 0 0作为写屏障 有什么区别 哪个更好 x86 也需要读屏障指令吗 RE2 将其读屏障函数定义为 x86 上的无操作 而 Linux 将其定义
  • 是否可以使用 JavaScript 中的对象文字定义动态命名的属性? [复制]

    这个问题在这里已经有答案了 考虑以下 var a foo bar 相当于 var a a foo bar 相当于 var a a foo bar 相当于 var a var b foo a b bar 是否可以做类似的事情 var b fo
  • 在 Android 上将画布保存为位图

    我在将画布的内容放入位图中遇到一些困难 当我尝试执行此操作时 文件大小约为 5 80KB 但它似乎完全是空的 每个像素都是 000 画布上绘制了一系列由手写形成的相互连接的线条 下面是我的视图的 onDraw 我知道它阻塞了 UI 线程 不