问题标签 [bitmapencoder]

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.

0 投票
2 回答
932 浏览

c# - TiffBitmapEncoder:使位图编码异步

问题:如何tiff相对于主线程异步保存/压缩位图图像(其中几个堆叠在文件中)?

我的设置:(同步和慢速工作解决方案:执行压缩时,线程会卡住几秒钟。我负担不起。)

我一直在尝试的:我希望encoder.save(fs)在主线程之外的另一个线程中执行压缩(调用)。

我试图将调用 encoder.save(fs)放入一个BackgroundWorker可以预防性地将编码器复制到本地版本的调用中(但不确定它是否有效),然后进行调用。我收到类似“调用线程无法访问此对象,因为另一个线程拥有它”之类的错误。

如果我使用 a Dispatcher.Invoke(只要我做得正确),执行就会再次变得非常慢。

我犯了一些愚蠢的错误吗?


编辑:(根据@meilke 和@user7116 的建议进行工作)

我现在将压缩器的分配和执行移到BackgroundWorker. 尽管现在colorBitmap已通过,但拥有另一个线程。我试过了freeze,但看起来还不够;我仍然得到一个'调用线程无法访问这个对象,因为另一个线程拥有它'

0 投票
0 回答
86 浏览

windows - 指数超出范围。

我现在想通过使用 BitmapEncoder/BitmapDecoder 来捕获位图。下面是 saveImageAsync 代码

错误提示“索引超出范围。必须为非负数且小于集合的大小。” 怎么解决?

0 投票
3 回答
1511 浏览

c# - TiffBitmapEncoder,导致 C#/WPF 中内存不足异常的内存错误

我有一个 WPF 应用程序,我通过使用 TiffBitmapEncoder 将它们转换为 TIFF 图像来保存数百个 BitmapSource。但是,我有这种奇怪的内存消耗,它经常抛出内存不足异常。

笔记:

  • 我安装了 8GB 的​​内存。
  • 图像尺寸从 10x10 到 300x300 像素不等(非常小)

这是有效的代码:

这是我记忆的屏幕截图:

没有内存异常

现在,如果我克隆 BitmapSource(即使只是一次),那么我会得到这个巨大的内存分配,导致内存不足异常。

这是我对第二个代码示例的记忆截图

内存异常

有谁知道这可能是什么原因以及如何解决它?

不同之处在于第一个示例中的 BitmapSource 已渲染到屏幕上,而第二个示例中没有。我的怀疑是这可能与 GPU 和调度程序有关,可能是硬件加速转换,而第二个是在 CPU 上完成的,存在某种错误......

试过:

  • 在没有运气GC.Collect(GC.MaxGeneration, GCCollectionMode.Forced, true);之后尝试调用SaveBitmapSource()
0 投票
1 回答
1400 浏览

c# - C#将视频流保存为图像文件

是否可以使用 c# 将视频流保存为图像文件?

我可以轻松保存一个文件,但跟不上流。我想知道是否可以在写入磁盘之前以某种方式缓存位图以提高性能或类似的东西

0 投票
1 回答
53 浏览

image - 为什么图像从顶部被修剪掉?

该代码有效,但图像从顶部被修剪掉。我已经尝试了一切,但我仍然无法弄清楚。

有人可以看看吗?提前致谢。

代码:

我非常感谢...

0 投票
0 回答
102 浏览

c# - BitmapFrame.Create 无法访问此对象

我正在尝试将多个BitmapSource图像从 png 文件中导出。这是我的代码:

线程调用:

功能:

这样做时,我会Additional information: The calling thread cannot access this object because a different thread owns it.在线收到:var bitmapFrame = BitmapFrame.Create((BitmapSource) currentImage);

我错过了什么?

0 投票
2 回答
1067 浏览

c# - PixelBuffer.AsStream() 方法已过时?

我正在检查MS 库

它看起来PixelBuffer.AsStream()对于通用应用程序开发来说已经过时了。

我正在使用带有 VS2015 社区版的 Win10(内部版本 10240)。

我想念什么吗?

此外,将流从字节或整数数组编码或写入 WriteableBitmap 的最佳方法是什么?

我正在尝试使用 BitmapEncoder 的方法,但我只能这样创建它:

之后在 WriteableBitmap 上看不到任何修改。否则框架会抛出异常(在我的代码之外)

解码器工作正常,我已将所有像素正确解码并流式传输到 byte[] sourcePixels 数组。

0 投票
1 回答
2744 浏览

c# - UWP 将图像编码为 PNG

我通过 URI(网络或文件系统)获取图像,并希望将其编码为 PNG 并保存到临时文件:

问题是,这段代码就挂了await enc.FlushAsync()。请帮忙!谢谢。

0 投票
1 回答
624 浏览

c# - BitmapEncoder 刷新抛出参数异常

我正在尝试在我的 UWP 应用程序中调整图像大小。大多数情况下,附加代码有效,但有时会await encoder.FlushAsync();抛出ArgumentException.

我已经前往 MSDN(https://msdn.microsoft.com/en-us/library/windows/apps/windows.graphics.imaging.bitmapencoder.bitmaptransform.aspx),他们告诉我(在“备注”) :

如果您尝试使用 BitmapTransform 成员缩放以索引像素格式存储的图像,FlushAsync 将失败并显示 HRESULT WINCODEC_ERR_INVALIDPARAMETER 。相反,您必须使用 GetPixelDataAsync 获取缩放后的像素数据,然后使用 SetPixelData 在编码器上进行设置。

我已经尝试过这样做,请参阅两条注释行(由于重复,这对我来说看起来有些错误)。在第二行(我尝试这样做),编码器以异常SetPixelData奖励我。buffer allocated not sufficient

导致此问题的示例图像:http ://www.spiegel.de/images/image-1028227-hppano-lqbn.jpg 。此处的单元测试:https ://github.com/famoser/OfflineMedia/blob/master/Famoser.OfflineMedia.UnitTests/Presentation/ImageResizeTest.cs

我怎样才能避免ArgumentException?我怎么知道图像是“索引像素格式”,以及如何调整这种格式的大小?

0 投票
1 回答
1292 浏览

c# - 不支持 BitmapEncoder 保存

我有以下代码,我看不出有什么问题,关于问题可能是什么的任何想法?

当我运行它抛出

System.NotSupportedException 发生 HResult=-2146233067

Message=不支持指定的方法。来源=PresentationCore

StackTrace:在 System.Windows.Media.Imaging.BitmapEncoder.Save(流流)在 FileFormatters.Export.SaveImage(BitmapFrame 数据,流 saveStream)

内部异常:空

MSDN 页面说

NotSupportedException :传递给编码器的 Frames 值为 null。

NotSupportedException :帧数小于或等于零。

但是帧数为 1 且数据不为空

更多信息