【问题标题】:What type should I use for saving images using C#?我应该使用什么类型来使用 C# 保存图像?
【发布时间】:2010-12-23 01:36:36
【问题描述】:

我有一个名为 Hero 的类,它具有以下属性。 String 用于字母,int 用于数字等。如果我要在那里保存图像,我可以使用什么?

public class Hero
{
    [Hero class's attributes (non-image related]
    public byte[] Portrait { get; set; }
    public byte[] Screenshot { get; set; }
}

Portrait 和 Screenshot 将是 .png 或 .jpg 文件。我应该为他们使用 byte[] 数组吗?我有点困惑。

哈哈,没关系。我发现了我的错误。我不得不使用 System.WINDOWS.Media.Imaging。去图吧。

【问题讨论】:

  • RTFM。提示:程序集:PresentationCore(在 PresentationCore.dll 中)

标签: c# wpf image .net-4.0 types


【解决方案1】:
【解决方案2】:

有一个实际的Bitmap class。我强烈建议不要为它使用 Byte 数组,因为它可能会损坏并且您会使图像无效。如果保存在 Bitmap 对象中,可以直接将对象传递给PictureBox control 并渲染到屏幕上。

此外,与 BMP 格式不同,PNG [假设] 和 JPG 不以相同的方式或表示存储像素格式。 JPG [在块内] 进行模型拟合(在其中节省了一些并丢失了信息)并存储模型的表示而不是直接的颜色值。

【讨论】:

  • 我找不到那个课程。我认为它在 .NET 4.0 或 WPF 上不可用。有什么帮助吗?
  • 它从2.0开始就在框架中,我想它可能从1开始就在那里,我不能确定。
  • 它在system.drawing下。 msdn.microsoft.com/en-us/library/…
  • 添加对 System.Drawing.dll 的引用
  • 修复了 shf301。非常感谢。
【解决方案3】:

您将如何使用它们? Image 类可能更合适。 Bitmap 可能是另一个不错的选择。

编辑:

然后你会想要使用BitmapImage。另请参阅 SO 94456 了解一些用法。

【讨论】:

  • 我将使用它们仅在 WPF 表单上显示它们。
【解决方案4】:

这取决于:

  1. 如果您需要操作该图像(旋转、缩放等),请使用 Bitmap(或其基类 - Image)。
  2. 如果您存储它只是为了将图像传递给客户端 (UI),则:
    1. 对于 Web 应用程序,请使用字节数组,以便可以直接将其呈现到响应流中。
    2. 对于 WPF 应用程序,请使用易于绑定的应用程序(可以是 BitmapImage,请参阅 related question)。

【讨论】:

    【解决方案5】:

    我将使用它们仅在 WPF 表单上显示它们。

    BitmapImage 适用于基于 XAML 的应用程序,或者 BitmapSource 的另一个派生类可能更适合您的需求,否则只是一个普通的旧 Bitmap

    【讨论】:

    • BitmapImage 在 PresentationCore 中,在 System.Windows.Media.Imaging 命名空间下。
    猜你喜欢
    • 2011-01-12
    • 2023-04-02
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 2017-04-14
    • 1970-01-01
    • 2020-09-23
    相关资源
    最近更新 更多