问题标签 [bitmapimage]

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 回答
2337 浏览

wpf - WPF BitmapImage 宽度/高度始终为 1?

我不明白...

输出:“宽度:1,高度:1”。

我已经尝试过 PixelWidth/PixelHeight,我尝试过使用BeginInit/手动创建它EndInit并且还设置PreservePixelFormat...没有任何效果。

(除了,更奇怪的是:这都是用户单击按钮并下载一些图像的过程的一部分。好吧,第二次单击该按钮时,它确实具有非 1 宽度/高度。)

0 投票
2 回答
19685 浏览

wpf - 通过 C# 在 WPF 中显示位图图像

我想做的事情很简单,但我很难让它发挥作用。我看到了一些类似的帖子,但我仍然有疑问。

我有一个名为 mnuA 的 MenuItem 对象。我想要的只是在 C# 中以编程方式设置图标属性。我试过以下

a)mnuA.Icon = new BitmapImage{UriSource = new Uri(@"c:\icons\A.png")}; 结果:我没有显示实际的图标,而是获得了类名 ( System.Windows.Media.Imaging.BitmapImage)

b)mnuA.Icon = new BitmapImage(new Uri(@"c:\icons\A.png")); 结果:我没有显示实际的图标,而是获得了图像的路径(file:///c:/icons/A.png

我究竟做错了什么?对于这样简单的事情,我真的需要一个转换器类吗?

0 投票
1 回答
5347 浏览

wpf - 在代码中加载 BitmapImage

从我的程序集(A)中,我想调用另一个程序集(B)中的一个方法,该方法传递一个图像。然后该图像显示在 WPF 窗口中 - 该窗口是 B 项目的一部分。

我似乎无法使用 pack:// uri 传递 ImageSource,因为这是在 B 的上下文中评估的,所以我想我需要在 A 中使用 CachedBitmap (?) 缓存图像。

如果我将图像设置为嵌入式资源并将其作为流加载,我已经设法让它工作,但这不是 WPF 方式。

从包装上看:我应该能够做到这一点的文档,但我在下面尝试了这些但没有任何工作;

"Images/32px-Nuvola_apps_cache.png": "找不到部分路径" "pack://application:,,,Images/32px-Nuvola_apps_cache.png": "URI 前缀无法识别。" . "pack://siteoforigin:,,,Images/32px-Nuvola_apps_cache.png": "无法识别 URI 前缀。"

我想要做的就是将一个 Resource .png 文件加载到内存中,然后将它批量传递给另一个程序集中的方法。

谢谢保罗。

0 投票
3 回答
3917 浏览

silverlight - 如何从 Silverlight 中的 BitmapImage 读取像素的颜色?

我在 Silverlight 中有一个 BitmapImage 实例,我试图找到一种方法来读取图像中每个像素的颜色信息。我怎样才能做到这一点?我看到这个类上有一个CopyPixels()方法可以将像素信息写入您传递的数组中,但我不知道如何从该数组中读取颜色信息。

我怎样才能做到这一点?

0 投票
1 回答
58048 浏览

wpf - 如何从资源中获取 BitmapImage?

我的程序集包含一个带有 BuildAction==Resource 的图像。我想从此嵌入资源中获取 BitmapImage。

我可以像这样从文件中加载 BitmapImage:

但是如何创建一个引用嵌入资源图像的 Uri?

当我尝试创建“ pack URI ”(例如pack://application:,,,/MyImage.pngor pack://application:,,,/MyAssembly;component/MyImage.png)时,会引发异常:

System.UriFormatException “无效的 URI:由于存在冒号 (':'),因此需要端口,但无法解析端口。”

我在这篇博文中找到了 UriFormatException 的修复方法

但是,应用该修复程序后,我仍然会在尝试从包 URI 加载 BitmapImage 时遇到异常。

使用该pack://application:,,,/Image.png格式时,我得到一个 NullReferenceException,而在使用该pack://application:,,,/AssemblyName;component/Image.png格式时,我得到一个 NotSupportedException “Uri 前缀无法识别”。


总结 我的问题是我试图在实例化任何 WPF 控件/窗口/等之前在进程中使用“包 URI”,因此“包”URI 方案尚未注册(其他 WPF 所需的“东西”也必须也不要设置,因为手动注册打包方案本身并不能解决问题)。解决方案是等到实例化我的 WPF 用户控件后才能使用包 URI。

0 投票
2 回答
46078 浏览

wpf - 将 ImageSource 转换为 BitmapImage - WPF

我正在使用一个生成大型 ImageSource 的类库,> 3000x3750 像素。我想将此 ImageSource 转换为 BitmapImage 以便我可以利用 DecodePixelWidth 或 DecodePixelHeight 而不是每次生成此图像时都调整它的大小。

我需要首先为用户显示此图像,并且大多数用户的屏幕分辨率为 1024x768,为此我将此 ImageSource 绑定到 Image 控件,但可以注意到它有多么“沉重”。

我怎样才能做到这一点?或者这种情况的最佳解决方案是什么?

谢谢!

0 投票
2 回答
2087 浏览

c# - 如何使用 C# 在 WPF 中设置 BitmapImage.CreateOptions

在上面的代码中,如果我尝试设置bi.CreateOptions它,它不会接受它。它显示为无。请问您能提出一个解决方案吗?

0 投票
1 回答
7530 浏览

wpf - 在运行时创建 CroppedBitmap - 不会从资源加载

我正在尝试编写将从资源中加载图像的代码,然后对其进行裁剪。当我在 XAML 中完成全部或部分代码时,此代码有效。我想从全 XAML 切换到全代码,因此我可以使用不同的 Uris 在多个地方重用它。

但是当我尝试在代码中做同样的事情时,我得到了一个 DirectoryNotFoundException,因为它突然开始尝试在磁盘上查找一个文件夹,而不是从资源中加载图像。

  • 如果我在 XAML 中加载 BitmapImage,然后在 XAML 中创建 CroppedBitmap,一切正常。
  • 如果我在 XAML 中加载 BitmapImage,然后编写代码从中创建 CroppedBitmap,一切正常。
  • 如果我在代码中加载 BitmapImage,而不从中创建 CroppedBitmap,一切正常。
  • 但是,如果我在代码中加载 BitmapImage 并在代码中创建CroppedBitmap,它会尝试从文件系统而不是资源加载,我会得到 DirectoryNotFoundException。

代码示例如下。我确定我在做一些愚蠢的事情,但我现在已经完成了整件事三遍(一次在我的真实应用程序中,一次在测试应用程序中,一次在写这个问题时),我得到了同样的结果结果都是三遍。

对于以下所有代码示例,我在我的项目中创建了一个图像文件夹,并在其中添加了一个名为“elf.png”的现有图像,其属性设置为默认值(构建操作 = “资源”;复制到输出目录 = “禁止抄袭”)。


案例 1:XAML 中的 BitmapImage 和 CroppedBitmap。

正如预期的那样,这显示了位图的裁剪部分。


案例2:XAML中的BitmapImage;代码隐藏中的 CroppedBitmap。

XAML:

代码隐藏中的构造函数:

正如预期的那样,这也显示了位图的裁剪部分。


案例3:代码中的BitmapImage;没有裁剪位图。

这显示了整个位图。这不是我想要的,但确实告诉我,我知道如何编写 C# 代码来创建正确类型的 Uri 并从资源加载 BitmapImage。


案例 4:代码中的 BitmapImage 和 CroppedBitmap。

据我所知,这只是将与以前相同的部分组合在一起。它使用我知道将从资源中加载 BitmapImage 的代码,以及我知道将从加载的 BitmapImage 中裁剪一部分的代码。但是不知何故,当两者放在一起时,它忘记了资源在那里,并尝试从磁盘加载。我得到以下异常:

  • XamlParseException:“无法创建在程序集“WpfApplication8,版本=1.0.0.0,文化=中性,PublicKeyToken=null”中定义的“Window1”的实例。调用目标引发了异常。标记文件“Window1.xaml”中的错误' 第 1 行位置 13。
    • 内部异常: TargetInvocationException:“调用的目标已抛出异常。”
      • 内部异常: DirectoryNotFoundException:“找不到路径 'C:\svn\WpfApplication8\WpfApplication8\bin\Debug\Images\elf.png' 的一部分。”

inner-inner-exception 堆栈跟踪显示原始异常 (DirectoryNotFoundException) 是由实例化 CroppedBitmap 的行抛出的。我不知道为什么该行会尝试从磁盘读取,或者为什么当 as-far-as-I-can-tell-equivalent XAML 工作正常时它不起作用。

由于我知道 XAML 使用的是无参数构造函数,因此我还尝试了以下版本,它应该更接近 XAML 的实际功能:

同样的例外,这次是从croppedImage.EndInit();线上。

关于如何获得全代码版本以正确加载资源并裁剪图像的任何想法?XAML 版本中发生了什么不同的情况?

0 投票
2 回答
2199 浏览

c# - 在 XAML 中存储位图图像

我需要将位图图像信息存储在 XAML 格式的文件中。任何人都可以在这方面帮助我吗?

0 投票
2 回答
1616 浏览

image - 我正在尝试创建一个以字节数组为源的图像对象。我究竟做错了什么?

我正在尝试创建一个以字节数组为源的图像对象。我究竟做错了什么?

当我尝试使用字节数组作为源数据初始化图像对象时,会引发异常。异常显示在我的代码中,如下所示。

我不知道地球上可能出了什么问题。
任何建议将不胜感激。