使用 C# 更改位图的 HSL 值
我想知道如何使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您必须查看每个像素的 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
您可以在位图上使用 LockBits,这将为您提供 < a href="http://msdn.microsoft.com/en-us/library/system.drawing.imaging.bitmapdata.aspx" rel="nofollow noreferrer">位图数据 目的。
使用 BitmapData,您可以:
有关此主题的详细说明可以在此处。
这是一篇关于 RGB -> 的文章HSL 您可能会发现它很有用。
You can use LockBits on your Bitmap, which will give you a BitmapData object.
With BitmapData you can:
A detailed explanation of this topic can be found here.
Here is an article about RGB -> HSL which you might find useful.