尝试使用掩码裁剪位图会抛出 IllegalArgumentException:

2024-05-09

我正在使用以下代码

public void cropSelection(){
    Bitmap bitmap = annotationBitmap.copy(annotationBitmap.getConfig(), true);
    Canvas canvas = new Canvas(bitmap);
    Paint p = new Paint();
    // p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR));
    canvas.drawBitmap(imageBitmap, 0, 0, p); // this line throws error
    imageBitmap = bitmap;
}

更令人惊讶的是,当我使用同一条线时canvas.drawBitmap(imageBitmap, 0, 0, p) inside onDraw()它不会抛出任何错误。效果很好。

堆栈跟踪

2020-01-17 11:20:07.815 21388-21388/com.mayank.picturemagic E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mayank.picturemagic, PID: 21388
java.lang.IllegalArgumentException: Software rendering doesn't support hardware bitmaps
    at android.graphics.BaseCanvas.onHwBitmapInSwMode(BaseCanvas.java:550)
    at android.graphics.BaseCanvas.throwIfHwBitmapInSwMode(BaseCanvas.java:557)
    at android.graphics.BaseCanvas.throwIfCannotDraw(BaseCanvas.java:69)
    at android.graphics.BaseCanvas.drawBitmap(BaseCanvas.java:109)
    at android.graphics.Canvas.drawBitmap(Canvas.java:1456)
    at com.mayank.picturemagic.MainView.cropSelection(MainView.java:434)
    at com.mayank.picturemagic.k$6.onClick(k.java:330)
    at android.view.View.performClick(View.java:6608)
    at android.view.View.performClickInternal(View.java:6585)
    at android.view.View.access$3100(View.java:785)
    at android.view.View$PerformClick.run(View.java:25921)
    at android.os.Handler.handleCallback(Handler.java:873)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:201)
    at android.app.ActivityThread.main(ActivityThread.java:6810)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)

终于得到了一个漂亮的解决方案

imageBitmap = imageBitmap.copy(Bitmap.Config.ARGB_8888, true);

本质上是从位图中删除硬件配置。

为了解决这个问题,早些时候我尝试过imageBitmap = imageBitmap.copy(imageBitmap.getConfig(), true);在这种情况下,配置是硬件,它会抛出错误硬件位图始终是不可变的。

然而应该有更有效的解决方案以及问题的一部分 -why this works inside onDraw() but not outside remains

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

尝试使用掩码裁剪位图会抛出 IllegalArgumentException: 的相关文章

  • 如何在 Android / Java 中获取图像的分辨率

    如何在 Android 中找到任何图像的分辨率 获取存储在磁盘中的图像大小的有效方法 例如获取用户选择上传的图像文件的大小 是使用BitmapFactory Options并设置inJustDecodeBounds为真 这样做你就会获取图像
  • TypedArray 的 getResourceId 方法

    我正在阅读有关的文档获取资源Id https developer android com reference android content res TypedArray html getResourceId int 20int 方法 它说
  • 如何在 Android 中使用 Assets 中预加载的 SQLite 数据库

    我想用preloaded database在我的应用程序中意味着尝试在安装 apk 时获取数据库 以便可以使用已保存在其中的数据 我复制了 成分 db 文件位于资产文件夹中 并使用以下代码 但这会出现错误 从资源文件复制数据库时出现问题 我
  • 取消html5浏览器中的单图请求

    我正在动态加载 大 图像以绘制到 html5 画布中 如下所示 var t new Image t onload t src http myurl 但每隔一段时间就会想取消图片请求完全地 我想出的唯一方法是设置src to i e t sr
  • Android 自定义视图不能以正确的方式处理透明度/alpha

    我正在绘制自定义视图 在此视图中 我使用两个不同的绘画和路径对象在画布上绘画 我基本上是在绘制两个重叠的形状 添加 Alpha 后 视图中重叠的部分比图像的其余部分更暗 这是不希望的 但我不知道如何解决它 这是我的代码片段 用于展示我如何在
  • Retrofit-2 内容类型问题

    我的 Api 接受 Content Type application json 作为标头 我按照改造文档中所述完美设置了标题 Headers Content Type application json POST user classes C
  • 如何从 Retrofit2 获取字符串响应?

    我正在做 android 正在寻找一种方法来执行超级基本的 http GET POST 请求 我不断收到错误 java lang IllegalArgumentException Unable to create converter for
  • Renderscript 示例构建错误

    所以我想尝试使用 RenderScript 的示例 并在 Eclipse 中导入了 HelloWorld 但它给了我这样的错误 2011 10 25 13 10 48 HelloWorld home mileoresko workspace
  • Android:应用内计费V3超时返回哪个响应码?

    出现网络超时情况时 Google Play 应用内结算服务 ice er V3 将返回哪些响应状态代码 它的所有功能都是统一的吗 我将在这里描述我的发现 我通过拔掉主机插头 在安装了全功能 GP GP Store V3 10 10 GP S
  • 如何将 android.net.Uri 转换为 java.net.URL? [复制]

    这个问题在这里已经有答案了 有没有办法从Uri to URL 我正在使用的库需要这个 它only接受一个URL但我需要在我的设备上使用图像 如果该方案的Uri is http or https new URL uri toString 应该
  • 在 Jetpack Compose 中跨可组合函数重复使用一组预览注释

    在 Jetpack Compose 中迈出第一步 这非常令人惊奇 除了一个恼人的问题 我有一组固定的预览 正常 深色和 RTL Preview name Normal group Screen showBackground true Pre
  • Android Studio - 值必须 ≥ 0

    我在 Android Studio 中收到与光标有关的错误 我的代码中有以下行 String data cursor getString cursor getColumnIndex columnIndex columnIndex 被传递到该
  • onClick 未在带有子项的 LinearLayout 上触发

    我有一个自定义的 LinearLayout 和一个较小的 TextView 子级 我希望能够单击 TextView 未覆盖的区域 因此我将 clickable true 和 onclicklistener 设置为 LinearLayout
  • Android Studio 将音乐文件读取为文本文件,如何恢复它?

    gameAlert mp3是我的声音文件 运行应用程序时 它询问我该文件不与任何文件类型关联 请定义关联 我选择TextFile错误地 现在我的音乐文件被读取为文本文件 我如何将其转换回music file protected void o
  • 在为 Android 实现 Google 登录时,任务“:app:transformClassesWithDexForDebug”执行失败

    我正在尝试为 Android 实现 Google 登录 并且我正在按照以下说明进行操作 https developers google com identity sign in android start integrating https
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • 在 Honeycomb Android 3.0 中显示 Action Bar 菜单项的图标

    我正在使用 Honeycomb android 3 0 开发 Android 应用程序 我正在尝试在 Action Bar 中显示菜单 菜单有一个图标和标题 当我们单击菜单项时 它会以下拉列表的形式显示其项目 它是下拉列表中带有项目名称但不
  • 安卓的限制

    我需要构建一个应用程序 该应用程序拍摄相机图像并将其上传到网络 在网络上进行一些处理并返回真 假 我在这方面遇到了一些问题 希望得到澄清 1 我的应用程序有什么方法可以知道 Android 相机捕获的图像吗 我从这里明白了什么 Androi
  • Android:解析 XML 数据的最佳解析器 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在开发一个应用程序 其中我第一次要解析来自远程服务器的 xml 文件中的数据 但我无法选择哪个解析器是有效的或最适合解析的 因为我知道主要有
  • 在 Android 中使用 iText 将图像添加到特定位置

    我想使用 Android 中的 iText 将图像添加到 PDF 文件中的特定位置 这是一个可填写的表单 我添加了作为图像占位符的文本框 我想要做的就是像这样获取该文本框和图像 public class FormFill public st

随机推荐

  • Meteor js:使Session对象部分持久化

    在我的流星应用程序中 我使用会话来存储有关用户活动的临时信息 我想使用 amplify js 将此信息的某些部分保留到浏览器 但不是全部 我想要一种拥有 临时 会话密钥和 持久 会话密钥的方法 例如我可以打电话 Session set pe
  • 使用 spring webclient 对 http 请求进行可读的调试日志记录

    我正在使用 Spring 反应式 WebClient 向 http 服务器发送请求 为了查看正在发送的底层请求和响应 我启用了调试日志记录reactor ipc netty包裹 可以正常查看传出请求的标头 虽然我通过 http 发送和接收纯
  • Qt GUI 编程设计

    我正在尝试创建一个 GUI 应用程序 主窗口 一个QMainWindow 包含 9 个固定大小的标签以及主窗口的大小 我尝试在没有 Qt GUI Designer 的情况下以编程方式制作它 该项目构建时没有错误 但我看不到主窗口上显示的任何
  • 要在进程中运行 dex,Gradle 守护进程需要更大的堆。目前有 910 MB

    实际上主要错误是 java exe完成非零退出值 1 首先我告诉你安装 studio 后遇到的每个问题 三天前 我刚刚安装了 android studio 并创建了新项目 1 首先它抛出错误 插件太旧 请更新到更新的版本 在谷歌上搜索后我改
  • 调整 QML 图像显示尺寸

    我有一个带有嵌套的 QML 窗口RowLayout 在内排我有两个图像 来源 png这些图像的文件 故意 相当大 当我尝试设置height这些图像上的属性使它们变小 但它们仍然被画得很大 Desired Appearance Actual
  • 使用模板时什么时候应该使用关键字“typename”[重复]

    这个问题在这里已经有答案了 我最近一直在做一个小项目 但我无法弄清楚一些事情 我得到了一个 h 文件 其中包含一个使用类型名模板的类 那个班级里面有一个私人班级 template
  • WebAPI 请求格式的异常

    在项目中使用RC版本的MVC4 WebAPI 我在API服务器端不断遇到以下错误 System FormatException The format of value application json charset utf 8 is in
  • 在 Intel 机器上构建 Apple Silicon 二进制文件

    如何在 macOS 11 Intel 上编译 C 项目以在 Silicon 上运行 我当前的构建脚本很简单 configure make sudo make install 我尝试过使用 host and target标志与aarch64
  • VC9 和 VC8 库兼容性

    原来的问题是在那里问的 http www ogre3d org phpBB2 viewtopic php t 44832 http www ogre3d org phpBB2 viewtopic php t 44832 有人问 虽然我想在
  • H2 和 PostgreSQL 兼容模式限制

    我使用 H2 数据库作为内存数据库进行测试 其中 PostgreSQL 在生产中使用 除了两者之间存在一些细微差别之外 此设置工作正常 我现在关心的一个问题是PostgreSQL 中标识符的长度限制为 64 https www postgr
  • eclipse juno 打开时出错

    在安装 Eclipse 并正常工作一年多后 我今天打开 Eclipse Juno 并在打开工作区时收到一条错误消息 我使用的是 Windows 8 64 位 Java 64 位和 Eclipse 64 位 此后我尝试重新安装 Java 和
  • Selenium webdriver :列表不是通用的;它不能使用参数 `` 类型进行参数化

    我试图将链接存储在列表中 请按照以下代码操作 public class frameswitch public static void main String args System setProperty webdriver gecko d
  • 使用 .NET 在 Windows 中创建弹出式“烤面包机”通知

    我正在使用 NET 并创建一个桌面应用程序 服务 当触发某些事件时 它将在桌面的一角显示通知 我不想使用常规的消息框 b c 那样会造成太大的干扰 我希望通知滑入视图 然后在几秒钟后淡出 我正在考虑一种类似于 Outlook 收到新邮件时发
  • 元素“system.webServer”具有无效的子元素“httpPlatform”

    我正在学习 Shawn Wildermuth 的课程here https app pluralsight com library courses aspdotnet 5 ef7 bootstrap angular web app table
  • 将大数据集加载到 GridView 中的最快方法是什么?

    我有一个数据源 其中包含 1 4 数百万行 并且还在不断增长 我们让用户添加过滤器来减少调用的数据 但您仍然一次查看 43 000 到 100 000 行 在任何人说之前 无论如何没有人可以查看那么多行 它们将被导出到 Excel 工作簿中
  • 模板特化与函数重载

    问题很简单 之间有什么区别 template
  • Apple 如何通知 iOS 应用程序内购买 (IAP) 退款?

    我在我的应用程序中成功实现了 Apple iOS IAP 并在沙箱中进行了测试 效果很好 我担心用户可能会通过 IAP 购买商品 将其下载到我的应用程序中 然后向 Apple 投诉并获得退款 没有明显的方式将退款报告给我的应用程序 它们是否
  • 是否不可能使 C++ 应用程序“防崩溃”?

    假设我们有一个 C 语言的 SDK 它接受一些二进制数据 如图片 并执行某些操作 难道这个SDK就不能做到 防崩溃 吗 我所说的崩溃主要是指由于用户传递的无效输入 例如异常短的垃圾数据 而导致内存访问冲突时操作系统强制终止 我没有使用 C
  • 字段“日期”必须是日期 MVC 4

    当我使用 jQuery 日期选择器时 我遇到了这个错误 jQuery datepicker datepicker defaultDate 7 autoSize true dateFormat dd mm yy Model DisplayNa
  • 尝试使用掩码裁剪位图会抛出 IllegalArgumentException:

    我正在使用以下代码 public void cropSelection Bitmap bitmap annotationBitmap copy annotationBitmap getConfig true Canvas canvas ne