如何在应用 后获取 BitmapImage 字节

2023-12-24

这个:

BitmapSource originalImage;
byte[] _originalPixels;
_originalPixels = new byte[(int) originalImage.Width*(int) originalImage.Height*4];
originalImage.CopyPixels(_originalPixels, 4*(int) originalImage.Width, 0);

在应用过滤器之前复制图像字节,这并不奇怪。

如何获取已应用效果的字节?

如何以编程方式将着色器效果应用于 byte[] 或某种低级像素结构数组?


Helper:

public static class ImageRenderingHelper
    {
        public static BitmapSource RenderToBitmap(FrameworkElement target)
        {
            int actualWidth = (int)target.ActualWidth;
            int actualHeight = (int)target.ActualHeight;

        Rect boundary = VisualTreeHelper.GetDescendantBounds(target);
        RenderTargetBitmap renderBitmap = new RenderTargetBitmap(actualWidth, actualHeight, 96, 96, PixelFormats.Pbgra32);

        DrawingVisual drawingVisual = new DrawingVisual();
        using (DrawingContext context = drawingVisual.RenderOpen())
        {
            VisualBrush visualBrush = new VisualBrush(target);
            context.DrawRectangle(visualBrush, null, new Rect(new Point(), boundary.Size));
        }

        renderBitmap.Render(drawingVisual);
        return renderBitmap;
    }

    private static void Arrange(UIElement element, int width, int height)
    {
        element.Measure(new Size(width, height));
        element.Arrange(new Rect(0, 0, width, height));
        element.UpdateLayout();
    }

    public static byte[] RenderImageWithEffects(ImageSource image, IEnumerable<ShaderEffect> effects)
    {
        effects = effects.Reverse();
        Grid root = new Grid();
        Arrange(root, (int)image.Width, (int)image.Height);
        Grid current = root;
        foreach (var shaderEffect in effects)
        {
            var effect = new Grid();
            Arrange(effect, (int)image.Width, (int)image.Height);
            effect.Effect = shaderEffect;
            current.Children.Add(effect);
            current = effect;
        }

        Image img = new Image();
        img.Source = image;
        Arrange(img, (int)image.Width, (int)image.Height);
        current.Children.Add(img);
        BitmapSource bs = RenderToBitmap(root);
        byte[] buffer = new byte[(int)bs.Width * (int)bs.Height * 4];
        bs.CopyPixels(buffer, 4 * (int)bs.Width, 0);
        return buffer;
    }

    public static byte[] RenderImageWithEffects(string imagePath, IEnumerable<ShaderEffect> effects)
    {
        BitmapImage bmp = new BitmapImage(new Uri(imagePath, UriKind.Absolute));
        return RenderImageWithEffects(bmp, effects);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在应用 后获取 BitmapImage 字节 的相关文章

  • 根据 AD 组成员身份限制对 WPF 视图的访问

    我们有一个 WPF 应用程序 我们希望根据用户的 AD 组成员身份限制对应用程序的访问 我们可以将其作为每个视图的属性 或者作为用户启动应用程序时的检查吗 任何代码示例将不胜感激 在 NET 3 5 及更高版本上执行此操作的最简单方法是使用
  • 不加载隐藏图像

    我的网站上有一堆隐藏图像 它们的容器 DIV 具有 style display none 根据用户的操作 某些图像可能会通过 JavaScript 显示 问题是我的所有图像都是在打开页面时加载的 我想通过仅加载最终可见的图像来减轻服务器的压
  • 全屏模式下的 XBAP

    我想以全屏模式运行 XBAP 有没有办法让IE全屏打开XBAP 由于我以完全信任的方式运行 每当用户单击全屏按钮时 我都会使用 Process Start 方法以 kiosk 模式打开 IE 以下代码解决了我的问题 Process Star
  • 如何转换WPF项目以便它可以被单独的exe用作类库

    有没有人尝试过或觉得需要在独立的 exe 中启动应用程序并将 WPF 用作另一个 DLL 而不是在其中包含 Main 方法 我看到的优点是逻辑分离 并且能够在 WPF 代码之外设置工厂等 从而减少程序集依赖性 我已经尝试过这样做并且可以做到
  • python:将base64编码的png图像转换为jpg

    我想使用 python 将一些 base64 编码的 png 图像转换为 jpg 我知道如何从 Base64 解码回原始 import base64 pngraw base64 decodestring png b64text 但现在我怎样
  • 使用 Java 编辑 jpeg EXIF 数据

    我想编辑 jpg 文件的属性 例如 评论 标题 拍摄日期 相机制造商等 我找到了读取这些数据的库 但我需要一个free带有示例的库edit them 我知道 apache 的成像 sanselan 但我无法用它编辑数据 如果您以前自己使用过
  • WPF Datagrid 组扩展文本 - 如何绑定?

    我正在使用带有组合框的数据网格 该组合框应该更改分组字段 我使用以下 xaml 来定义常规分组模板
  • 为什么在 WinForms 中可以跨线程添加控件,而在 WPF 中却不能?

    在虚拟 WinForms 应用程序中 我可以在设计时创建 ListBox 在运行时创建后台线程 然后从后台线程将控件添加到 ListBox 但如果我在 WPF 中执行相同的操作 则会出现错误 为什么我可以在 WinForms 中执行此操作
  • asp.net 检查 imageURL 是否存在

    我正在尝试从另一个 Intranet 站点获取用户的缩略图 但其中一些不遵循预定义的格式 这意味着我想加载默认的缩略图 检查图像 URL 是否有效的最佳方法是什么 根据您获取图像的方式 此方法的变体可能会起作用 img src alt My
  • 将标题和图像添加到导航栏

    我需要将 UIViewController 的名称和图像设置为导航栏 到目前为止 我可以显示图像 但标题当然丢失了 show image UIImage image UIImage imageNamed bar icon png UIIma
  • WPF:BinaryFormatter 可以序列化 FlowDocument 实例吗?

    我喜欢使用binaryformatter来序列化流文档 但这是例外 Serializable public class BinFlow public FlowDocument my get set BinFlow myBF new BinF
  • 如何将 asm 着色器编译为 fxo 文件?

    我有一个已编译的 fxo 着色器 我正在尝试对其进行稍微编辑 仅调整一些常量 使用 fxdis https code google com archive p fxdis d3d1x https code google com archiv
  • 使用 JavaScript 获取图像的一部分

    是否可以显示图像的任何部分img通过 JavaScript 标记 带有像素 我将准备一个大图像 例如 32x320 像素 并定义起始位置 X Y 例如 0 32 和宽度 高度 例如 32 32 并且希望脚本显示第二个 32x32 像素 部分
  • 无法在 WPF 中使用 MVVM 在设计时进行数据绑定 - ViewModel 属性永远不会被调用

    好吧 我正在为此烦恼 所以任何帮助将不胜感激 我正在使用 MVVM 模式构建 WPF 应用程序 为了在设计时获取数据 我将 Ninject 依赖注入框架与服务定位器结合使用 很像文章中的示例 http jonas follesoe no Y
  • 使用 XAML 文件作为矢量图像源

    我希望能够使用矢量图形 最好在 XAML 中定义 作为图像控件的源 就像我当前可以使用 PNG 等光栅图像一样 这样我就可以轻松地混合和匹配位图和矢量图像 如下所示
  • 有没有办法将图像异步加载到用户缓存?

    我有一份物品清单 它们每个都是一个带有名称的正方形 当用户将鼠标悬停在正方形上时 将显示一个图像 这是由 jQuery 完成的 代码是这样的 square hover function var link this attr title th
  • Google AJAX API - 如何获得 4 个以上结果?

    我使用下面的 google API ajax 来获取特定搜索词的图像 这是在一个WinForms app 下面的链接似乎有效 但它只返回 4 个结果 通过 JSON 有谁知道如何哄得更多吗 显然必须有另一个参数来请求更多或分页结果 但我似乎
  • 特定日期的plotly js图像标记

    我正在使用这个例子 https plot ly javascript images add multiple images https plot ly javascript images add multiple images并尝试在特定日
  • 在 WPF 媒体元素中连续重播视频

    我有一个在媒体元素中播放的视频文件 我需要继续播放 因此我尝试了 me play me MediaEnded new RoutedEventHandler me MediaEnded 使用此事件方法 loop to keep video p
  • WPF XAML 定义的 MenuItem 重用开始工作,然后消失

    以下简单代码尝试在两个单独的菜单上重用 Window Resources 中定义的 MenuItem

随机推荐

  • 寻找类似表的数据结构

    我有2组数据 假设一个是一个民族 另一个是一个群体 一个人可以在多个组中 而一个组中可以有多个人 我的操作基本上是对团体和人员进行 CRUD 以及一种确保人员列表属于不同组的方法 这被称为 alot 现在我正在考虑制作一个由二进制 0 和
  • 这些位掩码实际上是如何工作的?

    例如 NSCalendar 中的此方法采用位掩码 NSDate dateByAddingComponents NSDateComponents comps toDate NSDate date options NSUInteger opts
  • VSCode 中用于 Markdown 链接的键盘快捷键?

    从其他文本编辑器我习惯于添加 Markdown 链接 选择我想要链接的单词 在我的 Mac iPad Pro 键盘上按 cmd K 这会在标记的单词周围加上方括号 附加一对普通括号 并将光标放在这两个括号之间 以便我可以 只需按 cmd V
  • SQL:Like 与 Contains - 不同的结果

    我正在一个表上运行两个查询 SELECT MSDS FROM dbo MSDSSearch3 WHERE CONTAINS MSDS STYCAST And SELECT MSDS FROM dbo MSDSSearch3 WHERE MS
  • java 8中按多个字段名称分组

    我从 POJO 中找到了按某些字段名称对对象进行分组的代码 下面是代码 public class Temp static class Person private String name private int age private lo
  • 与 BouncyCastle 签署 CSR

    过去几天我一直在寻找解决我的问题的方法 但找不到任何东西 我的代码中遗漏了一些东西 但我不知道是什么 不知何故 当我签署我的 PKCS 10 时 链就断了 基本上我有一个服务器和一个客户端 我想让客户端向服务器发送 CSR 然后服务器对其进
  • 如何在 SwiftUI 应用程序中记录 Firebase Analytics 屏幕名称?

    我正在尝试在我的应用程序中记录屏幕名称 但大约 95 的屏幕名称未在 Firebase Analytics 中设置 In onAppear为了我的观点Analytics setScreenName screenName screenClas
  • windows下如何删除回收站中的文件? Python

    我正在尝试使用 python 删除回收站中的文件 但我找不到方法 谢谢 对于 Windows 操作系统 您可以使用winshell https github com tjguk winshell模块和它的empty https winshe
  • 有没有办法在 MySQL / Rails 中强制区分大小写以进行单个查找?

    我正在搜索一些标签 有些用户喜欢 猫 而另一些用户喜欢 猫 想想看 无论如何 有没有办法强制特定的查找区分大小写 例如 Tag find some special option here 有任何想法吗 您还可以在不更改列属性的情况下执行区分
  • C语言从文件中删除一行

    我想删除文件中的某些行 并根据行的某些部分是否与指定的字符串匹配来在同一文件中插入某些行 有没有一种方法可以在不使用临时文件将内容复制到等等的情况下执行此操作 问题是 文件 本质上 是磁盘上的字节数组 或任何其他物理基底 但是 无论如何 字
  • 列导向垫台

    我遇到的情况是 从后端收到的数据是面向列的 该数据的示例如下 columnName ID cells 1 2 3 4 5 columnName Name cells a b c d e 到目前为止 我已经成功地配置了我的 mat table
  • 如何在 Django Rest Framework 中创建 Json Web 令牌以供用户登录?

    我想将 JWT 集成到我的用户登录 API 中以进行身份 验证 如何将它与我在下面添加的现有代码集成 在代码中 我添加了一个需要相应更改的虚拟令牌 谢谢 添加我的 django 项目中的一些相关代码部分以供参考 序列化器 class Use
  • Boost.Asio SSL 上下文不验证证书

    这是我之前问题的延续 Boost Asio SSL上下文load verify paths未加载证书 https stackoverflow com questions 40198728 boost asio ssl context loa
  • 如何从 android 将参数传递到 HTML 文件

    我可以在 android webview 中很好地显示 HTML 文件内容 现在我如何将参数传递到 HTML 文件中 例如 我的 HTML 内容有一个视频播放器 我需要将动态值 URL 传递到 HTML 文件中以播放动态视频 我的 HTML
  • 设置带有“free”刻度的分类轴标签 ggplot2

    我正在尝试使用 R 3 1 1 中的 ggplot2 包 1 0 1 和 scales free 在分面图中的分类轴上设置标签 如果我在没有手动设置轴刻度标签的情况下进行绘图 它们会正确显示 第一个图 但是当我尝试设置标签 第二个图 时 两
  • Spring Cloud Stream Kafka Streams Binder KafkaException:无法启动流:“监听器”不能为空

    我是 Kafka Streams 和 Spring Cloud Stream 的新手 但在将集成相关代码移至属性文件中方面阅读过有关它的好文章 以便开发人员可以主要关注事物的业务逻辑方面 这里我有我的简单应用程序类 package com
  • 从插件模块读取 dll.config (不是 app.config!)

    我正在编写一个 C NET 2 0 dll 它是一个插件更大的应用 https en wikipedia org wiki AutoCAD 我的模块的 Visual Studio 项目有一个 app config 文件 该文件与 MyPro
  • 在 unix/linux shell 中进行模式匹配时如何使用反通配符或负通配符?

    假设我想复制目录的内容 不包括名称中包含 音乐 一词的文件和文件夹 cp exclude matches Music target directory 应该用什么来代替 exclude matches 来实现此目的 在 Bash 中 您可以
  • git 嵌套存储库 - 子模块、符号链接、其他

    我正在尝试使用 git 设置我的 Zend Framework 开发环境 或更重要的是我的目录结构 然而 我的根本问题实际上与所涉及的特定库无关 但更重要的是如何让 git 完成我想要的事情 我的项目根目录是 home jsuggs pro
  • 如何在应用 后获取 BitmapImage 字节

    这个 BitmapSource originalImage byte originalPixels originalPixels new byte int originalImage Width int originalImage Heig