使用 C# 更改位图的 HSL 值

发布于 2024-11-19 19:24:10 字数 56 浏览 4 评论 0原文

我想知道如何使用 C# 更改位图的 HSL 值。 必须能够加载位图并更改每个像素上的 HSL 值。

I would like to know how i can change the HSL values of a bitmap using C#.
It must be possible to load a bitmap and change the HSL values of it on every pixel.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

捂风挽笑 2024-11-26 19:24:10

您必须查看每个像素的 RGB,将其转换为 HSL,修改 HSL 值,转换回 RGB 并将新的像素数据写入位图。不幸的是,System.Drawing 没有内置的 HSL 到 RGB 功能(尽管 RGB 到 HSL 确实存在)。

查看以下代码项目文章,了解可以进行两种方式 RGB/HSL 转换的类: http ://www.codeproject.com/KB/recipes/colorspace1.aspx

You'll have to look at the RGB of every pixel, convert it to HSL, modify the HSL values, convert back to RGB and write the new pixel data to the bitmap. Unfortunately, System.Drawing doesn't have a built in HSL to RGB functionality (although RGB to HSL does exist).

Check out the following code project article for a class that can do two way RGB/HSL conversions: http://www.codeproject.com/KB/recipes/colorspace1.aspx

她如夕阳 2024-11-26 19:24:10

您可以在位图上使用 LockBits,这将为您提供 < a href="http://msdn.microsoft.com/en-us/library/system.drawing.imaging.bitmapdata.aspx" rel="nofollow noreferrer">位图数据 目的。

使用 BitmapData,您可以:

  1. 使用“不安全”代码块迭代每个像素并修改值。
  2. 使用 Marshal.Copy 进行复制将像素放入数组中,修改数组中的值,然后将其复制回位图源。

有关此主题的详细说明可以在此处。

这是一篇关于 RGB -> 的文章HSL 您可能会发现它很有用。

You can use LockBits on your Bitmap, which will give you a BitmapData object.

With BitmapData you can:

  1. Use "unsafe" code blocks to iterate over every pixel and modify the value.
  2. Use Marshal.Copy to copy the pixels into an array, modify the values in the array, then copy it back to the bitmap source.

A detailed explanation of this topic can be found here.

Here is an article about RGB -> HSL which you might find useful.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文