0

当您创建一个新的位图并使用 SetPixel() 函数并设置参数黑色时,结果与您没有为指定像素设置任何颜色并将位图保存为 Jpeg 格式时的结果相同。保存图像并稍后读取 Jpeg 图像文件后,我应该如何知道像素具有真正的黑色或未设置?

4

3 回答 3

1

你应该使用PNG。它是压缩图像格式。与 JPEG 相比,它的主要优点是它是无损的并且支持透明度。在只有几种颜色的简单图像上,我使用 PNG 体验过更小的图像尺寸。

如果您出于某种原因只需要使用 JPEG,我会使用一些特定的颜色来表示“无像素”。如果要使用黑色 (0, 0, 0) 作为此颜色键,则必须为真正的黑色像素使用不同的颜色。例如,这可能是 0x000001 (0, 0, 1)。眼睛无法将它与真正的黑色区分开来,但计算机程序可以。因此,如果图像中有 0x000000 (0, 0, 0) 彩色像素,只需将其替换为 0x000001 (0, 0, 1)。但请注意,JPEG 的有损压缩在使用此技术时可能会导致问题。使用更高的质量应该可以解决这个问题。

于 2013-06-16T21:40:48.670 回答
1

“未设置”和“黑色”在 JPEG 中是相同的。默认情况下,它是黑色的。在具有透明度的格式中,例如 32 位 PNG,您将能够分辨出差异。

于 2013-06-16T21:08:55.267 回答
1

JPEG 文件不支持透明度,因此每个像素都有一些颜色 - 无论您是否明确设置它。这就是为什么您没有设置某个像素的颜色并不重要 - 当您将位图保存为 JPEG 时,所有像素都将以某种颜色保存。您未设置的将保存为默认黑色。

当您使用支持透明度的图像格式(例如 PNG)时,还有另一种“颜色”可用(这是默认值):透明颜色。这是默认情况下用于未明确设置的像素的颜色。

请注意,透明颜色并不是真正的单独颜色:每个像素都有一个透明字节(假设像素格式为 ARGB),默认情况下,每个像素的透明字节设置为 255(完全透明)。所以每个像素的透明度可以独立于其他像素来控制。

于 2013-06-16T21:14:19.337 回答