Android合并两张图片

2023-12-15

我想合并两张图像,然后将它们保存在 Android SDCard 上。一张来自相机,一张来自资源文件夹。问题是我收到此错误: Caused by: java.lang.IllegalStateException: 不可变位图传递给 Canvas 构造函数。谢谢。

        Bitmap bottomImage = BitmapFactory.decodeResource(getResources(),R.drawable.blink);
        Bitmap topImage = (Bitmap) data.getExtras().get("data");  

        // As described by Steve Pomeroy in a previous comment, 
        // use the canvas to combine them.
        // Start with the first in the constructor..
        Canvas comboImage = new Canvas(bottomImage);
        // Then draw the second on top of that
        comboImage.drawBitmap(topImage, 0f, 0f, null);

        // bottomImage is now a composite of the two. 

        // To write the file out to the SDCard:
        OutputStream os = null;

        try {
            os = new FileOutputStream("/sdcard/DCIM/Camera/" + "myNewFileName.png");
            bottomImage.compress(CompressFormat.PNG, 50, os);

            //Bitmap image.compress(CompressFormat.PNG, 50, os);
        } catch(IOException e) {
            Log.v("error saving","error saving");
            e.printStackTrace();
        }

只需进行以下更改即可解决此问题:

        int w = bottomImage.getWidth();
        int h = bottomImage.getHeight(); 
        Bitmap new_image = Bitmap.createBitmap(w, h ,bottomImage.getConfig());

现在的问题是它不保存图像。你知道为什么吗?


This会帮助你=)


Edit:(嵌入链接中的答案)

返回可变位图的唯一静态“构造函数”是:

(类:位图) public static Bitmap createBitmap(int width, int 高度,布尔值 h​​asAlpha)
返回: 具有指定宽度和高度的可变位图。

  • 所以你可以使用 getPixels/setPixels 或像这样:

    Bitmap bitmapResult = bm.createBitmap(widthOfOld, heightOfOld, hasAlpha);
    Canvas c = new Canvas();
    c.setDevice(bitmapResult); // drawXY will result on that Bitmap
    c.drawBitmap(bitmapOld, left, top, paint);
    
  • 如何从 Bitmap 获取可绘制对象:通过使用扩展了可绘制对象的 BitmapDrawable 子类,如下所示:

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

Android合并两张图片 的相关文章

  • 地理编码器返回长度为零的地址

    地理编码器直到今天都工作正常 它开始返回长度为 0 的字符串 注意 这不是 Geocoder 线程的重复 我在启动线程之前使用意图服务和 AsyncTask 来获取它 并且 AsyncTask 方法在 8 个月内工作正常 检查这段代码 ht
  • 使用JACK时生成的proguard mappings.txt文件在哪里?

    我一直在尝试使用最新的JACK 和 JILL 构建系统到我的android项目 我知道JACK进程包括proguard处理 但之后我找不到映射 txt归档回溯堆栈跟踪Google Play 开发者控制台上提供的错误数 请帮我查找映射 txt
  • Cordova 无法构建项目

    Update 新读者 请检查我最后的编辑 更新cordova后 无法构建 运行 Mac mini de Toni funcook toniweb sudo cordova build Password Running command Use
  • 尝试使用 PHP GD 以固定宽度/高度生成按比例裁剪的缩略图

    我正在尝试使用 GD 在 PHP 中创建一个缩略图生成器 它将获取图像并将其缩小到固定的宽度 高度 它从原始图像中获取的正方形 基于我的固定宽度 高度 将来自图像的中心 以给出比例正确的缩略图 我将尝试用一些漂亮的 ASCII 来演示这个令
  • Android MultiSelectListPreference,java.lang.String 无法转换为 java.util.Set

    我尝试为我的设置视图实现 MultiSelectListPreference
  • 为什么mapbox-android sdk 无法从build.gradle 解析?

    我试图在这里设置基本教程 但我被 Android Studio 中的错误阻止 https docs mapbox com android maps overview install the maps sdk https docs mapbo
  • 如何在android.mk文件中指定c头文件

    我有一个 c 源文件夹名称 clib 其中 我有一些示例文件 例如 1 h 1 c 2 h 2 c 3 c 3 h 在该文件夹之外我有 4 个 h 4 c 4 jni h 4 jni c 现在为了构建 so 我创建了像这样的 android
  • 使用 IntentService 使用 Camera2 拍照

    我正在尝试创建一个可以拍照但不显示预览的应用程序 使用本教程 https www youtube com watch v oPu42I0HSi4 https www youtube com watch v oPu42I0HSi4如果我使用和
  • Android EditText 和 SearchView:主要区别是什么(设计除外)?

    我需要在我的 Android 应用程序中实现一个搜索界面 该界面可以过滤多个RecyclerView里面一个ViewPager 我已经实现了EditText and SearchView小部件并尝试查看差异 我感兴趣的听众是 myEditT
  • 使用 Android 解析 JSON 的最有效方法

    我编写了一些代码来解析我的 Android 程序收到的 Google 距离矩阵 JSON 响应 我唯一感兴趣的数据是 距离 值 节点 我的代码可以工作 但似乎必须有一种更简单的方法来做到这一点 距离值节点在 JSON 中嵌套得很深 但是真的
  • 无法将库添加到我的 Android 项目

    我正在创建一个新应用程序 我想使用一些像这样的库 https github com JakeWharton Android ViewPagerIndicator https github com JakeWharton Android Vi
  • Android 视图可见性消失

    如果我设置了一个视图可见性 它被夸大了 消失了 它会加快我的 UI 速度吗 它将加快 UI 的实际绘制速度 因为 好吧 您不必再绘制它 但它仍然会膨胀 并且膨胀过程不会更快
  • 在 Android 上解析 RSS

    我有几个 RSS 源需要为我的应用程序进行解析 我按照这里的优秀教程进行操作 http w2davids wordpress com android rssatom feeds parsing with rome http w2davids
  • @android的含义

    我想问一下是什么意思 android as in android id android id list 我在不同的 android 示例和教程中看到过它 我也用谷歌搜索过它 我发现的唯一解释是 列表和空 ID 是由 Android 平台为我
  • Ctrl 单击 Eclipse 中的类显示二进制/jar 而不是源

    使用Eclipse 版本 Helios 服务版本 2 内部版本号 20110218 0911 与Android插件 我有一个 Android 项目 AndroidUtil 它被标记为我的主要 Android 应用程序的 库 项目 当我按住
  • Android - 有没有办法监听 GPS 是否启用或禁用

    我编写此代码是为了接收位置更新 PendingIntent launchIntent PendingIntent getBroadcast context 5000 intent 0 manager requestLocationUpdat
  • Android Studio安装JDK错误

    In Android Studio I am facing bellow error 当我按下时会显示此弹出窗口Alt Enter对于缺少的类 符号 当我点击 setup SDK 时 它显示两个选项 1 8 Java版本 1 8 0 60
  • 选择活动时运行时崩溃

    首先我想说我几乎没有 Android 经验 这是我在 Android 中的第一个项目 而且我的老师不太擅长教学 所以我对任何过度的无知表示歉意 在进一步讨论之前先解释一下 我的应用程序的目标本质上是能够记录您在某些活动上花费了多少时间 记录
  • 将 AutomationID 与 ListView 结合使用

    我正在尝试将 AutomationId 附加到列表视图中的项目 理想情况下 将项目名称绑定到显示的项目
  • 在 Android(JB 上)中,如何向自定义丰富通知添加操作?

    我一直在使用 Jelly Bean 中新的丰富通知 当我使用模板设置新通知时 一切都按预期工作Notification BigPictureStyle Notification BigTextStyle or Notification In

随机推荐

  • 不同 dll 中的 C++ 模板专业化会产生链接器错误

    我有一个第三方 dll 其中包含具有多个专业化的模板类 我在 Linux 上有自己的专长 尝试编译 Windows dll 但会导致链接器错误 我尝试了一下 发现模板标头上的 dllimport 规范可能是原因 删除它可以解决我的问题 但是
  • 我已使用默认 HTML5 视频播放器将视频添加到我的网站 代码是这样的
  • 为什么递增 Java int 最终会导致负数?

    我试图检查不同的输入并在java中创建无限循环 我发现一旦int增加超过最大限制 它会变成负数 2147482958 我只是在无限循环中增加 int Code public static void infiniteLoop for int
  • 在 Swift 中从 UIImageView 检索 UIImage

    我已经找到了解决方案 但它不在 Swift 中 将 UIImageView 转换为 UIImage 我什至试图通过使用 Swift 来实现它不安全可变指针但运气不佳 然而 指针在 Swift 中通常是不受欢迎的 如果有一个简单的单行解决方案
  • SimpleCursorAdapter 和 ViewBinder - 将数据绑定到要在单击时检索的 ListView 项目

    所以我有一个ListView 用一个ListActivity 我正在填充SQLiteDatabase 我正在尝试将行的 ID PK 附加到视图 以便onListItemClick对于每个列表项 我可以使用该 ID 执行操作 我读过可以将任意
  • ng-click 在 ng-repeat 中不起作用

    ng click 在 ng repeat 内部不起作用 外面可以用 我已经放了一个在这里摆弄 div a test a h5 Please select trigger event triggerEvent triggerTitle h5
  • 一个视频视图被另一个视频视图阻挡

    我的活动布局如下所示 基本上 我在左侧有一个列表视图菜单和两个视频视图 我根据用户单击的菜单项在这两个视频视图之间切换
  • 如何围绕 obj 波前文件内容旋转相机?

    我有一个 obj 文件 我事先不知道它的内容边界框 我想将它加载到搅拌机中并在 K 帧 例如 15 帧 中围绕它旋转相机 如何使用 python api 在搅拌机中做这样的事情 进行对象翻转的常见方法是添加一个空物体并使其成为相机的父级 为
  • 命名参数的使用

    抱歉 如果重复 我正在通过 C 阅读 CLR 参数 一章首先解释可选参数和命名参数 那么 您能否举一些例子来说明使用命名参数有一些好处 或者这只是风格或习惯的问题 您个人使用命名参数吗 命名参数与 C 4 中的可选参数结合使用时非常有用 这
  • Google Cloud Datastore 自动生成的唯一 ID

    我正在使用 Google Cloud Datastore 并使用命名空间来分区数据 有些类型通过创建如下密钥来使用 Cloud Datastore 自动生成的 ID var key Datastore key example 此代码将生成一
  • WPF:什么会导致绑定源不更新?

    我遇到了一种情况 我不确定如何调试 我希望有人能提出为什么它可能不起作用并为我指出正确的方向 我有一个来自数据库的 TIFF 图像 该图像作为类型的属性公开System Data Linq Binary 我想在一个 TIFF 图像中显示各个
  • Matlab 在一个轴上具有不同颜色的网格线

    我已经回顾了之前的问题 如中所述带实线和灰色的小网格但它并没有帮助我解决我的问题 我的问题与 xticks 有关 我希望我的网格线出现在 xaxis 上的特定点上 而其他一些网格线则以不同的颜色出现在不同的点上 像这样的东西 plot x
  • 无法推送到新的 gitlab 安装

    大家下午好 备份了几个旧的 git 存储库 并且正在将它们添加到已知的 gitlab 安装中 安装看起来像这里的指南https github com gitlabhq gitlabhq wiki VirtualBox Image 当添加新的
  • 映射数组项不会渲染所有元素

    在我更新对象中的答案后 它变得未定义 所以它不适合我的应用程序的其余部分 我所乞求的 0 answers Array 5 category description null legacyName null name null 1 answe
  • 如何使 macOS 应用程序窗口在关闭并使用菜单栏项重新打开时隐藏?

    我正在开发一个 macOS 应用程序 使用 Swift 和 Storyboard 其窗口的行为类似于 Adob e Creative Cloud 应用程序 经过几个小时的研究 我找不到最佳解决方案 这意味着 当应用程序启动时 主窗口会在状态
  • Java 内存模型是否保证线程内写入的可见性?

    考虑一个简单的单线程 Java 程序执行 不涉及同步操作 仅涉及实例变量的普通读取和写入 一个简单的实现忽略所有写入似乎符合 Java 内存规范 首先 适用的一般性声明 17 4 内存模型决定了程序中每个点可以读取哪些值 每个隔离线程的操作
  • MongoDB 中的全文搜索未产生“@@@”的预期结果

    所以我在一个集合中有一个文档 其中一个字段的值为 我对集合建立了索引并尝试运行查询 db getCollection TestCollection find text search 但没有显示结果 我该如何解决这个问题 样本文件 id Ob
  • Linux使用堆栈上的字符串编写系统调用[重复]

    这个问题在这里已经有答案了 我刚刚开始在 linux 上自学 x86 汇编these视频教程 早期它教您如何使用 write 系统调用来打印存储在数据部分中的字符串 是否可以使用 write 系统调用来打印存储在堆栈上的字符串 这是我编写的
  • AWS EMR Spark:写入 S3 时出错 - IllegalArgumentException - 无法从空字符串创建路径

    我已经尝试解决这个问题很长时间了 不知道为什么我会得到这个 仅供参考 我正在 AWS EMR 集群上的集群上运行 Spark 我调试并清楚地看到提供的目标路径 类似s3 my bucket name Spark 作业创建 orc 文件并在创
  • Android合并两张图片

    我想合并两张图像 然后将它们保存在 Android SDCard 上 一张来自相机 一张来自资源文件夹 问题是我收到此错误 Caused by java lang IllegalStateException 不可变位图传递给 Canvas