gpt4 book ai didi

c# - .NET CF 位图类质量很差

转载 作者:太空狗 更新时间:2023-10-30 00:35:23 24 4
gpt4 key购买 nike

我有一些代码可以使用 Bitmap 类创建图形。然而,生成的位图质量很差,我该如何提高它的质量?请注意,我使用的是 Compact Framework!

以下是我如何做各种事情的一些片段:

根据现有的jpg创建带背景的位图

Bitmap bitmap = new Bitmap(filename);

然后我从位图中创建一个 Graphics

Graphics myG = Graphics.FromImage(bitmap);

然后我像这样绘制图形:

myG.DrawLine(majorAxisPen, graphRect.Left, graphRect.Bottom, graphRect.Right, graphRect.Bottom);

绘制完我需要的所有内容后,我会像这样保存 Bitmap:

bitmap.Save(fileDestination, System.Drawing.Imaging.ImageFormat.Jpeg);

这是它生成的图像 Poor quality image

最佳答案

您可能会遇到两种“低质量”来源。

  1. 图形对象的实际绘制可能质量较低 - 即您绘制的线条可能有锯齿(像素化)。
  2. 当您将图形输​​出到流时,低质量可能是 jpeg 编码的副作用。

每个 Graphics 对象都有许多属性,用于控制您可以对该对象执行的操作的“质量”。特别是,您应该将 SmoothingMode 设置为 HighQuality 以避免线条图出现锯齿。 在 .NET Compact Framework 中不受支持

为避免压缩伪影,您可以通过手动控制压缩而不是使用(低质量)默认 ImageFormat.Jpeg 来控制 jpeg 压缩参数 - 不幸的是,如果不求助于 CF,则无法这样做到手动 P/Invoking 或第三方库。有关完整 .NET Framework 的更广泛的代码示例,请参阅我对类似问题的回答:How do you conver a HttpPostedFileBase to an Image? .

一个简单的替代方法是使用 PNG,这是一种无损图像格式,每次保存时都不会降低质量 - 考虑到您发布的示例的简单几何形状,这甚至不会在文件方面花费您任何费用-尺寸。使用另一种格式可能是您唯一的选择;由于 ImageCodecInfo 不可用,因此在 Compact Framework 中无法自定义 jpeg 编码器参数。如果您确实需要 Jpeg,您可以尝试使用外部库(例如 http://www.opennetcf.com/library/sdf/ ),或直接 P/Invoke native 方法来访问特定于平台的编码器。

一些可能的抗锯齿方法:

关于c# - .NET CF 位图类质量很差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4852180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com