晓嗔戈の文章

颜色算法:RGB与HSV(HSB)的相互转换

使用C#实现RGB与HSV(HSB)之间的转换

RGB转HSV(HSB)

在.NET中System.Drawing已经提供了从Color中获取色相、饱和度、亮度的方法。

/// <summary>
///     HSB转RBG
/// </summary>
/// <param name="rgb"></param>
/// <returns></returns>
public static float[] RgbToHsb(Color rgb)
{
    //获取色相
    var hue = rgb.GetHue();
    //获取饱和度
    var saturation = rgb.GetSaturation();
    //获取亮度
    var brightness = rgb.GetBrightness();
    return new float[] {hue, saturation, brightness};
}

继续阅读“颜色算法:RGB与HSV(HSB)的相互转换”

颜色算法:SRGB与线性RGB的相互转换

使用C#实现SRGB与线性RGB之间的转换

在一些涉及到图像颜色计算的算法时,由于一些效果是基于线性RBG进行计算的,直接对SRGB的图像进行处理就会得到错误的效果。

在本篇中,记录了SRGB与线性RGB之间的转换公式,方便在需要时使用。

SRGB转线性RGB

/// <summary>
///     将SRgb颜色转为线性RGB颜色
///     https://en.wikipedia.org/wiki/SRGB#The_forward_transformation_.28CIE_xyY_or_CIE_XYZ_to_sRGB.29
/// </summary>
/// <param name="sRgb">(单通道)颜色值 范围0-1</param>
/// <returns></returns>
public static double SRgbToLinearRgb(double sRgb)
{
    if (sRgb <= 0.04045) return sRgb / 12.92;

    return Math.Pow((sRgb + 0.055) / 1.055, 2.4);
}

线性RGB转SRGB

/// <summary>
///     将线性RGB颜色转为SRgb颜色
///     https://en.wikipedia.org/wiki/SRGB#The_forward_transformation_.28CIE_xyY_or_CIE_XYZ_to_sRGB.29
/// </summary>
/// <param name="linearRgb">(单通道)颜色值 范围0-1</param>
/// <returns></returns>
public static double LinearRgbToSRgb(double linearRgb)
{
    if (linearRgb < 0.0031308) return 12.92 * linearRgb;

    //var linearR=3.24096994*sR-1.53738318*sg-0.49861076*sb
    return Math.Pow(linearRgb, 1.0 / 2.4) * 1.055 - 0.055;
}

[PPTX解析] 图片调整:删除背景、矫正、颜色、艺术效果、透明度

PPTX解析:图片篇

图片是 PPT 的基本元素,第三方程序想要解析并呈现PPT中的图片,会面临如何实现PPT中图片效果的问题。想要解析并呈现这些效果,我们首先需要了解PPT是如何存储图片效果的。

注:本篇只讨论.pptx格式存储的PPT,保存格式为.ppt的PPT不在研究范围内。

图片效果存储解析

当前PPTX存储图片的效果分为两种形式:

继续阅读“[PPTX解析] 图片调整:删除背景、矫正、颜色、艺术效果、透明度”

[PPTX解析] 图片效果算法篇:设置透明色

PPTX解析:设置透明色

在PPT中,我们可以通过图片格式选项中->颜色->设置透明色,将指定颜色设置为透明,以实现去除纯色背景的需求。

file

效果原理

PPT中设置透明色的逻辑十分简单清晰:

· 将颜色A替换为颜色B

当颜色B为透明色时,即可达成将某一种颜色设置为透明色的要求。

继续阅读“[PPTX解析] 图片效果算法篇:设置透明色”

[WordPress] 如何为每个页面设置不同的背景

免费好用的背景插件(Full Background Manager)

在使用WordPress进行网站的开发的过程中,我们可能希望在不同的页面呈现出不同的背景。比如首页使用绚丽多彩而又复杂的图片作为背景,但显然这种背景是不适合与文章页的,会干扰阅读,影响体验。

于是我们的网站需要一种能力,即:不同页面使用不同的背景

在此,推荐使用插件:Full Background Manager

继续阅读“[WordPress] 如何为每个页面设置不同的背景”