问题标签 [wic]

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 投票
1 回答
741 浏览

c# - 如何 WIC 将 D2D 位图编码为 png

目前我正在用 WPF C# 编写一个绘图应用程序并且遇到了问题。我想绘制不同的形状并将它们保存为 png/bmp。所以现在我正在将 bmp 解码为 direct2d 位图以在渲染目标上绘制。但我的问题是我不知道如何将 D2DBitmap 保存为 png,因为我找不到编码函数......

我不允许使用 SharpDX,所以我希望有人可以帮助我解决这个问题。

或者也许有人有另一种绘制形状和东西的解决方案,但不在 xml 文件中。

0 投票
1 回答
1043 浏览

c# - 如何向图像添加 JPEG 注释 (COM)?

我正在尝试使用 WPF 向图像文件添加 JPEG 注释。尝试以下代码会给我一个ArgumentOutOfRangeException. 设置其他属性没有问题。

要清楚:我必须设置 MSDN http://msdn.microsoft.com/en-us/library/windows/desktop/ee719904%28v=vs.85%29.aspx中列出的 /com/TextEntry 字段#_jpeg_metadata

数据由仅支持此标签的另一个应用程序读取,因此不能选择使用其他“评论”字段。

有任何想法吗?

0 投票
2 回答
4229 浏览

directx - Direct2D:如何将 ID2D1RenderTarget 的内容保存到图像文件中?

这个问题与此非常相似,但尚未得到答案。我的问题是,我有一个来自 d2dfactory->CreateDxgiSurfaceRenderTarget() 的 D2D DXGI RenderTarget,我想使用 WIC 将其内容保存到图像文件中。我只是在阅读这个这个,所以在我看来,我不能只在 WIC 渲染目标上创建一个 ID2D1Bitmap 并使用 ID2D1Bitmap::CopyFromRenderTarget() 从我要保存的输入渲染目标复制,因为他们正在使用不同的资源。所以这是我使用 ID2D1RenderTarget::CreateSharedBitmap() 得出的结果:

这段代码有什么问题吗?(我敢肯定有很多 :)) MSDN 上的某处说 WIC 渲染目标仅支持软件模式,而 DXGI 渲染目标仅支持硬件模式。这就是上述对 CreateSharedBitmap() 的调用失败的原因吗?那么我应该如何使用 D2D 将 DXGI 表面内容保存到图像文件中呢?

0 投票
1 回答
766 浏览

c# - WIC 或 DirectComposition 是否取代了 GDI+?

我有一个项目可能涉及一些基本的服务器端图像创建(缩放、转换、一些文本堆肥)。过去我曾使用 GDI+ 来做类似的事情,但微软现在将其标记为 Legacy Graphics并列出了一些替代品,例如DirectCompositionWindows Imaging Component

我有点不清楚区别,那么哪些(如果有)是 GDI+ 的最佳替代品?

0 投票
2 回答
1159 浏览

c# - 应用简单水印后图像大小急剧增加

我有一组图像,我正在按照此处System.Windows的教程使用和System.Windows.Media.Imaging(是的,不是使用 GDI+)以编程方式在它们上绘制一个简单的水印。

大多数图像不超过500Kb,但在应用简单的水印(即透明背景的文本)后,图像大小急剧增加。

例如,一张440Kb的图片在用下面的方法加水印后变成了8.33MB,这让我很震惊

我注意到与原始图像相比,图像质量有所提高。图像更平滑,颜色更浅。但是,你知道我真的不想要这个。我希望图像保持原样,但要包含水印。质量没有提高,当然图像尺寸也没有剧烈变化。

我在这里是否缺少任何设置来告诉我的程序保持与源图像相同的质量?如何防止我的ApplyWatermark方法更改后图像大小的显着变化?

编辑

1.这就是我转换BitmapFrameStream. 然后我用它将Stream图像保存到 AmazonS3

2.这就是我得到的BitmapFrame方式Stream

3.这就是我从本地目录读取文件的方式

0 投票
1 回答
467 浏览

directx - 从 WIC 纹理到 DX11 纹理的意外行间距

我对为什么我得到 128 个字节的扫描线/行间距而不是我指定的 8 个字节感到困惑。正在加载的 BMP 为 4 像素,左上角为红色,右上角为绿色,左下角为蓝色,右下角为黄色。

代码如下:

输出是:

0 投票
0 回答
353 浏览

c++ - 使用 IWICFormatConverter 或 WICConvertBitmapSource 有什么区别

我从我的 ID2D1RenderTarget(它是一个 WICBitmapRenderTarget)中获取位图像素数据,但有时我希望它是 8bpp 灰色。所以我使用 WICConvertBitmapSource 函数,因为它看起来更简单。但我想知道 IWICFormatConverter 接口是否会有所作为。文档显示它们之间根本没有关系。

谢谢

0 投票
1 回答
419 浏览

c# - 如果未设置图像的 DPI,如何查找图像的 DPI,WPF/WIC?

我这边有个小问题。我正在使用以下代码片段调整图像大小:

问题是当我计算 and 的值scaleXscaleY。一些图像具有 DPI,但其中一些具有0.00或者我可以假设没有为这些图像设置 DPI。结果,我Infinity对这两个变量scaleXscaleY变量有价值。因为 和 的image.DpiXimage.DpiY0.00。好吧,它没有抛出Attempt to divide by zero异常。

为了在图像缩放/调整大小过程后达到预期的高质量,我需要计算scaleXandscaleY以这种方式:width / image.Width * 96 / image.DpiX. 但是,正如我已经提到的,有些图像没有设置 DPI。

所以我的问题是,如果图像没有设置 DPI,在这种情况下我应该怎么做,以防止Infinity这些变量有值?如果未设置,是否有可以用于图像的默认 DPI 值?或者可能是一种使用 WPF/WIC(WPF 和 Windows 映像组件)以编程方式计算 PDI 的方法,即使它没有设置?

0 投票
1 回答
686 浏览

c++ - 使用 WIC 将 QImage 编码为 png?

我正在尝试测试 WIC 和 QT 的编码功能之间的性能。但我找不到使用 WIC 从 QImage(QT 对象)编码为 PNG 的方法。

WIC 的编码器需要从 IStream 初始化,它应该提供与图像文件相同的数据。但我所拥有的是一种位图。

任何人都可以帮助我吗?任何评论将不胜感激。

0 投票
3 回答
106 浏览

math - 将过于精确的分数舍入到人性化的精度

如何将过于精确的分数四舍五入为更易于阅读的不太精确的格式?

我正在使用 MS 的 Windows 成像组件提取的 JPEG EXIF 曝光时间数据。WIC 以分数形式返回曝光时间,分子和分母具有单独的整数。

WIC 通常按预期工作,但对于某些 JPEG,WIC 以百万分之一秒返回曝光时间,这意味着它报告的曝光时间为 7391/1000000 秒,而不是报告例如 1/135 秒的曝光时间。1/135 和 7391/1000000 之间的差异非常小,但后者对大多数用户来说并不直观。因此,我想将过于精确的曝光时间四舍五入到摄影中使用的最接近的标准曝光时间。

除了使用已知合理曝光时间的查找表并找到最接近的匹配之外,还有更好的方法吗?