使用FJCore编码Silverlight WriteableBitmap

2023-12-05

我试图找出如何使用 FJCore 将 WriteableBitmap 编码为 jpeg。我知道 WriteableBitmap 提供原始像素,但我不确定如何将其转换为 FJCore 为其 JpegEncoder 方法期望的格式。 JpegEncoder 有两个重载,一个重载采用 FluxJpeg.Core.Image,另一个重载采用 DecodedJpeg。

我试图创建一个 FluxJpeg.Core.Image 但它需要一个 byte[][] 作为图像数据。 byte[n][x,y] 其中 x 是宽度,y 是高度,但我不知道 n 应该是什么。

我认为 n 应该是 4,因为这对应于每个像素中编码的 argb 信息,但是当我尝试时,FJCore 抛出参数超出范围异常。这是我尝试过的。 Raster 是我的 byte[4][x,y] 数组。

raster[0][x, y] = (byte)((pixel >> 24) & 0xFF);
raster[1][x, y] = (byte)((pixel >> 16) & 0xFF);
raster[2][x, y] = (byte)((pixel >> 8) & 0xFF);
raster[3][x, y] = (byte)(pixel & 0xFF);

弄清楚了!我下载了FJCore 来自 code.google.com并完成了图像课程。它只需要 RGB 字节。这是我写的函数。我需要图像的 base64 版本,这就是我的函数返回的内容。

    private static string GetBase64Jpg(WriteableBitmap bitmap)
    {
        int width = bitmap.PixelWidth;
        int height = bitmap.PixelHeight;
        int bands = 3;
        byte[][,] raster = new byte[bands][,];

        for (int i = 0; i < bands; i++)
        {
            raster[i] = new byte[width, height];    
        }

        for (int row = 0; row < height; row++)
        {
            for (int column = 0; column < width; column++)
            {
                int pixel = bitmap.Pixels[width * row + column];
                raster[0][column, row] = (byte)(pixel >> 16);
                raster[1][column, row] = (byte)(pixel >> 8);
                raster[2][column, row] = (byte)pixel;
            }
        }

        ColorModel model = new ColorModel { colorspace = ColorSpace.RGB };
        FluxJpeg.Core.Image img = new FluxJpeg.Core.Image(model, raster);
        MemoryStream stream = new MemoryStream();
        JpegEncoder encoder = new JpegEncoder(img, 90, stream);
        encoder.Encode();

        stream.Seek(0, SeekOrigin.Begin);
        byte[] binaryData = new Byte[stream.Length];
        long bytesRead = stream.Read(binaryData, 0, (int)stream.Length);

        string base64String =
                System.Convert.ToBase64String(binaryData,
                                              0,
                                              binaryData.Length);

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

使用FJCore编码Silverlight WriteableBitmap 的相关文章

随机推荐

  • 与 python pandas 中的melt相反

    我不知道如何在 python 中使用 Pandas 进行 反向熔化 这是我的起始数据 label type value 0 x a 1 1 x b 2 2 x c 3 3 y a 4 4 y b 5 5 y c 6 6 z a 7 7 z
  • 如何解决 AMD 路径冲突?

    我正在尝试使用Esri ArcGis JavaScript API 其加载方式为Dojo using dojo require 我有一个现有的模块化AMD requirejs我需要将此代码集成到其中的 Typescript 应用程序 在初始
  • 如何获取点击“赞”按钮的用户的 Facebook ID?

    有没有办法获取在我自己的网站上点击社交插件的 赞 按钮的用户的 Facebook ID 尽管我花了一整天的时间寻找它 但我找不到任何方法 据我所知 您不可能知道谁点击了 喜欢 按钮 但是如果用户通过您的网站登录 Facebook 意味着您编
  • Spring-React frontend-maven-plugin 不工作

    我正在关注的文档是https spring io guides tutorials react and spring data rest 构建一个使用 Spring 的 React 应用程序 spring 部分很好 直到到达建议使用插件安装
  • Android 回收器视图中的水平和垂直滚动

    我有一个要求 我需要在回收器视图中进行水平滚动和垂直滚动 它基于来自服务器的数据类型 如果服务器的响应将第一个元素作为数组 我需要将其放在水平滚动列表中 如果第二个元素是单个对象 那么我需要将其显示在卡片中 同样 顺序会发生变化 并应反映在
  • Excel VBA 项目未关闭

    我有一个 COM 插件 在其中处理 Excel 事件 我点击Alt F11查看与Excel相关的VBA项目 但是 当我关闭工作簿时 项目资源管理器中的 Excel VBA 项目也没有关闭 当我的 COM 插件未安装时 它会正常关闭 发生了什
  • .NET MVC 4 JSON Post/Put Web.config 中的字符限制

    我使用 PUT 动词将 JSON 发送到 MVC 控制器 当我达到某个限制时 我会收到 500 错误 如果我缩小发送的 JSON 那么它发送得很好 有谁知道 web config 中的配置允许将更大量的 JSON 传递到我的应用程序吗 答案
  • Power Query - 从单列到整个表的数据转换

    我有一个要求 我有一张这样的桌子 实际表有 2 列 Column1 Column2 ColAValue ColBValue New Row ColCValue Above Row ColCValue2 Above Row ColDValue
  • 我们可以在EF中进行交叉连接吗?

    所以基本上我回来时问了这个问题 查询包含对不同数据上下文中定义的项目的引用 但这次我是在 EF 中进行的 EF是否支持两个表之间的交叉连接 您无法在不同的数据上下文之间进行连接 您必须使用 linq objects 进行连接 var cro
  • 在 JWASM/MASM 中 - pshufw 产生错误 A2030:当前 CPU 模式下不接受指令或寄存器

    我有以下汇编程序 在编译时出现错误 686 mmx model flat c code MmxAdd proc push ebp mov ebp esp mov eax ebp 24 cmp eax AddOpTableCount jae
  • 使用 Angular2 将文件上传到 REST API

    实际上 我正在开发一个 Spring REST API 其接口是用 Angular 2 编码的 我的问题是我无法使用 Angular 2 上传文件 我的java网络资源是 RequestMapping method RequestMetho
  • 如何将浏览器重定向到 ASP.NET 中的本地文件?

    我想要火狐浏览器打开C somefile txt在本地驱动器上 我尝试过使用 file 前缀的response redirect 但它只是插入 对象移到此处 进入页面 我还想对路径进行 htmlencode 因为它可能包含特殊字符 Edit
  • 如何创建类型列表的笛卡尔积?

    我想使用可变参数模板创建类型列表的叉积 这是我到目前为止所拥有的 include
  • Android:以编程方式更改按钮背景

    我有这个颜色资源文件
  • matplotlib 中使用 Latex 的无衬线数学

    以下脚本 import matplotlib matplotlib use Agg import matplotlib pyplot as mpl mpl rc font family sans serif mpl rc text uset
  • 300 000 000 000 的质因数?

    我需要找出超过3000亿的素因数 我有一个函数正在添加到它们的列表中 非常缓慢 现在它已经运行了大约一个小时 我认为它还有相当长的距离要静止 我这样做是完全错误的还是这是预期的 编辑 我试图找到数字 600851475143 的最大质因数
  • Jquery 移动后退按钮

    我有一个应用程序 在其中以编程方式向页面添加后退按钮 这意味着第一页上不会有后退按钮 然而 应用程序本身有多种进入应用程序的方式 换句话说 我可以收到通知 并且在触摸该通知时 它会转到应用程序中的特定区域 该区域不会有返回主页的后退按钮 如
  • 动态改变UITable单元格高度?

    我需要根据内容大小 长度调整单元格高度 尝试了几种方法 哪一种给出了准确的高度而不重叠 请参阅本教程进行更改UITableViewCell动态高度 调整 A UITableViewCell 大小 并使用本教程 uitableviewcell
  • 在keras中对合并层进行训练

    我正在实施以下this穆罕默德 哈瓦伊 Mohammad Havaei 的论文 它使用以下架构 我修改了一些代码here这样做 print Compiling two path model local pathway modle l Seq
  • 使用FJCore编码Silverlight WriteableBitmap

    我试图找出如何使用 FJCore 将 WriteableBitmap 编码为 jpeg 我知道 WriteableBitmap 提供原始像素 但我不确定如何将其转换为 FJCore 为其 JpegEncoder 方法期望的格式 JpegEn