问题标签 [bitmapsource]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# 创建 PixelFormat.Format32bppArgb 倾斜图像
我正在尝试将 3 个灰度位图组合成一个颜色位图。所有三个灰度图像的大小相同(这是基于来自哈勃的数据)。我的逻辑是:加载“蓝色”图像并转换为PixelFormat.Format24bppRgb
. 基于此,创建一个新的字节数组,其大小是蓝色数据数组长度/3 的 4 倍(因此它将是一个蓝色字节,一个绿色字节,一个红色字节,一个字节每个像素的 alpha,因为我的系统是小端)。从蓝色图像的“蓝色”字节填充数组的“蓝色”字节(在第一个循环中,将 alpha 字节设置为 255)。然后我加载绿色和红色位图,将它们转换为PixelFormat.Format24bppRgb
,然后提取 g/r 值并将其添加到数据数组中的正确位置。然后,根据我的判断,最终的数据数组正确设置了 bgra 字节。
当我填充了数据数组时,我用它来:
创建一个PixelFormats.Bgra32 BitmapSource
然后将其转换为位图。
PixelFormat.Format32bppArgb
使用 Bitmap 构造函数(宽度、高度、步幅、PixelForma、IntPtr)创建位图
PixelFormat.Format32bppArgb
使用指针创建位图
创建返回位图的所有三种方式都会导致图像“倾斜”(抱歉,我不知道更好的词)。
实际输出(生成最终位图的所有三种方式)是:实际输出
所需的输出类似于(这是在 Photoshop 中完成的,因此略有不同):所需的输出
三个文件名 ( _blueFileName, _greenFileName, _redFileName
) 在构造函数中设置,我在创建类之前检查以确保文件存在。如果有人想要,我可以发布该代码。
谁能告诉我我做错了什么?我猜这是由于步幅或类似的原因?
注意:我无法发布指向我用作输入的图像的链接,因为我没有 10 个声望点。如果有人也想要它们,也许我可以通过电子邮件或其他方式发送链接。
这是我的代码(注释掉了一些东西,注释描述了如果使用每个注释掉的块会发生什么):
android - 自定义列表适配器取消绑定视图
我开发了一个自定义列表适配器,我在其中使用持有人附加视图。我还检查了视图是否已经被装箱并一次又一次地重用它们。列表视图在片段内,当我导航到另一个片段时,我正在使用 fragmenttransaction.replace 。但问题是,当我使用 MAT 监视转储文件时,我发现适配器中存在的图像视图仍然保留对位图的引用。甚至其他人的不同观点也有参考。
我想知道如何删除对该视图的引用?
wpf - 将 BitmapSource 转换为 BitmapImage 的更快方法
我们有一些视频软件可以将其转换BitmapSource
为BitmapImage
稍后使用以下代码将其绘制到屏幕上。问题是在速度较慢的机器上,这个过程似乎有点慢,运行 MS 分析器发现这些位图操作(即ToBitmapImage
函数)是我们进行的前 4 个最昂贵的调用。我能做些什么来提高效率吗?
c# - 如何仅知道图像路径将图像保存到剪贴板
假设我有一个图像路径C:\MyImages\MyImage.jpg
,我将如何使用 C# 将它放到剪贴板上。
我知道我会使用该类System.Windows.Clipboard.SetImage();
,但这需要 aBitmapSource
作为参数。我如何让一个BitmapSource
对象从给定的路径输入到这个方法中?
android - 使用基本适配器从 Db 链接 Android 图片
所以 em,第一次在这里提问,我正在开发一个 android 应用程序,其中我有一个带有图像网格视图的片段。我正在使用数据库来保存图像 URL,并使用图片适配器将它们转换为位图。
如何将名为 COLUMN_IMAGElINK 的列中的所有字符串提取到字符串数组,或者将我的数据库字符串发送到我的图片适配器类?
c# - 是否可以将 byte[] 转换为位图源?
到目前为止,我有:
然后我想我能以某种方式从 img 获得 BitmapSource 吗?如果这是完全错误的,请随时纠正我。
ffmpeg - 解码 H264 流并转换为 BitmapSource?
我FFMPEG
用来解码H264
流。
输出帧中的结果是AVFrame* pFrame
,它的格式可能是YUV420P
。
我想转换pFrame
为RGB
然后BimapSource
从中构造RGB
.
我在互联网上搜索过,有很多方法可以pFrame
从RGB
.
但我需要的最终输出BitmapSource
是C#
. 所以我不知道哪种方式更好?
有人可以告诉我转换的算法pFrame -> RGB -> BitmapSource
。
性能对于这个阶段非常重要,所以我需要最快的算法。
非常感谢,
T&T!
c# - WPF:绘制位图 - 访问冲突?
我的程序正在将位图帧作为视频绘制到 WPF 控件。
示例代码如下:
我的代码遇到了两个问题:
"Insufficient memory to continue the execution of the program"
1)有时它在在线运行时会与消息一起崩溃JpegBitmapDecoder^ decoder = gcnew JpegBitmapDecoder(...)
2)有时它会因“访问冲突”消息而崩溃,这种情况下的调用堆栈如下:
有人可以告诉我代码中的问题。
非常感谢!
电通
wpf - 什么时候应该调用 GC.Collect()?
我正在使用 BitmapSource 将帧绘制为从 IP 摄像机获取的视频。以下是摘要代码。
问题是,从任务管理器查看的内存使用量非常大。并且经过一段时间后,当内存使用量大约为 1300MB 时,the application is not responding
.
我的应用是 32bit,IP Camera 的分辨率是 1280x960,每秒帧数是 25,有 4 个摄像头。每个位图帧约为 3.5 MB。这意味着这种情况下的速度分配内存约为 3,5*25*4 = 350 MB/秒。
所以内存增加得非常快,似乎 GC 无法覆盖它。因此造成"The application is not responding"
。
我试图GC.Collect()
在每个while循环中调用如下代码。该应用程序运行良好。但这会导致 CPU 消耗。
为了避免 CPU 消耗,我尝试GC.Collect()
通过下面的计时器线程在 1s 后调用
这种方式解决了CPU消耗问题。但是内存使用量非常大的问题依然存在。
有人可以向我展示解决我的问题的最佳方法。
c# - 从 BitmapSource 转换为 Visual?
有没有办法从 a 转换System.Windows.Media.Imaging.BitmapSource
为 a System.Windows.Media.Visual
?我有一个 a 的实例,BitmapSource
但我想将其转换为 aVisual
以便我可以利用 WPF 矢量图形。我已经看到很多从视觉到位图的例子,但是我怎样才能使用 C# 去另一个方向呢?