您的位置:

RGB转HEX的应用

在网站设计中,我们常常需要选择颜色来设置页面的风格。而以 RGB 色彩模式的形式确认颜色之后,我们需要将其转换为其他的颜色模式。其中,RGB 转为 HEX 是极为常用的操作,它可以将颜色的 RGB 数值转换为 HEX 格式,方便我们在 CSS 中使用。下面,我们将详细讨论 RGB 转 HEX 的相关内容。

一、RGB转HEX在线

如果你需要进行简单的 RGB 转 HEX 操作,可以选择使用相关在线工具。在线工具可以方便地将 RGB 数值转为 HEX 格式,无需运用公示计算。以下是一个实例:

function rgbToHex(r, g, b) {
  r = r.toString(16);
  g = g.toString(16);
  b = b.toString(16);

  if (r.length == 1)
    r = "0" + r;
  if (g.length == 1)
    g = "0" + g;
  if (b.length == 1)
    b = "0" + b;

  return "#" + r + g + b;
}

console.log(rgbToHex(0, 255, 0)); // #00ff00

该实例中,我们定义了一个 RGB 转 HEX 的函数 rgbToHex,它将 RGB 数值转换为 HEX 格式,然后在控制台输出 RGB 为 0,255,0 的 HEX 数值 #00ff00。

二、RGB转换

1. RGB转HEX 颜色数值转换

将 RGB 色彩模式的数值转换为 HEX 色彩模式的数值,这是最基础的颜色数字转化的需求。其对应的公式如下:

R的十六进制数值×65536 + G的十六进制数值×256 + B的十六进制数值 = 最终的Hex十六进制数值

在计算机中,十六进制数值 0x 是十进制数值的 16 倍,因此需要将 RGB 数值转换为 0~255 之间的值,再将其编写为十六进制形式,在使用公式计算。

例如,我们将 RGB 数值 R=255, G=99, B=71 转换为 HEX 格式的数值。

255, 99, 71 转换为 0xff, 0x63, 0x47
0xff × 65536 + 0x63 × 256 + 0x47 = 16737791
因此,RGB 数值为 255,99,71 的 HEX 格式的数值为 #ff6347

2. RGB转HEX 16进制颜色代码转换

CSS 中,我们常常使用十六进制颜色代码表示颜色。如果需要将十六进制颜色代码转换为 RGB 数值,我们可以采用 HEX 转 RGB 的公式进行计算:

R = 16进制的R数值 × 16进制的R数值   其中,R的十六进制数值是0-FF,需要将其转换为十进制的数值。
G = 16进制的G数值 × 16进制的G数值   其中,G的十六进制数值是0-FF,需要将其转换为十进制的数值。
B = 16进制的B数值 × 16进制的B数值   其中,B的十六进制数值是0-FF,需要将其转换为十进制的数值。
最终RGB数值为:R, G, B

例如,我们将十六进制颜色代码 #ff6347 转换为 RGB 数值。

首先,将 #ff6347 拆分为 ff、63、47 三个十六进制数值
R = 0xff × 0xff = 65280
G = 0x63 × 0x63 = 16129
B = 0x47 × 0x47 = 7127
因此,HEX 格式数值 #ff6347 对应的 RGB 数值为 R=255, G=99, B=71

三、RGB转YCbCr

YCbCr 是一种基于 RGB 色彩模式的彩色空间。在数字电视、图像和视频处理领域中十分常用,这里我们简单介绍一下如何从 RGB 色彩模式转为 YCbCr 色彩模式。

要将 RGB 色彩模式转为 YCbCr 的数值,需要使用以下公式:

Y = 0.299 * R + 0.587 * G + 0.114 * B
Cb = 128 - 0.168736 * R - 0.331264 * G + 0.5 * B
Cr = 128 + 0.5 * R - 0.418688 * G - 0.081312 * B

其中,Y 表示亮度,Cb 和 Cr 表示色度。

例如,RGB 色彩数值 R=255, G=255, B=255,我们需要将其转换为 YCbCr 色彩模式的数值。

Y = 0.299 * 255 + 0.587 * 255 + 0.114 * 255 = 255
Cb = 128 - 0.168736 * 255 - 0.331264 * 255 + 0.5 * 255 = 128
Cr = 128 + 0.5 * 255 - 0.418688 * 255 - 0.081312 * 255 = 128
因此,RGB 数值为 255,255,255 对应的 YCbCr 色彩模式的数值是 Y=255, Cb=128, Cr=128。

四、RGB转CMYK

CMYK 是一种以四种颜色(青色、品红色、黄色、黑色)来表示互补色的颜色模式。将 RGB 转为 CMYK 时,需要使用以下公式计算:

K = 1 - max(R, G, B) / 255.0
C = (1 - R / 255.0 - K) / (1 - K)
M = (1 - G / 255.0 - K) / (1 - K)
Y = (1 - B / 255.0 - K) / (1 - K)

其中K表示黑色色度,C、M、Y分别表示青色、品红色、黄色色度。

例如,RGB 数值为 R=0, G=255, B=0,我们需要将其转换为 CMYK。

K = 1 - max(0, 255, 0) / 255.0 = 0
C = (1 - 0 / 255.0 - 0) / (1 - 0) = 1
M = (1 - 255 / 255.0 - 0) / (1 - 0) = 0
Y = (1 - 0 / 255.0 - 0) / (1 - 0) = 1
因此,RGB 数值为 0,255,0 对应的 CMYK 数值为 C=1, M=0, Y=1, K=0。

五、RGB转16进制

在 CSS 中,我们常常采用 HEX 色彩模式表示颜色。要将 RGB 色彩模式转为 HEX,需要先将 RGB 数值转换为 0~255 的范围内,再将其转换为十六进制格式。以下是一个实例:

function rgbToHex(r, g, b) {
  r = r.toString(16);
  g = g.toString(16);
  b = b.toString(16);

  if (r.length == 1)
    r = "0" + r;
  if (g.length == 1)
    g = "0" + g;
  if (b.length == 1)
    b = "0" + b;

  return "#" + r + g + b;
}

console.log(rgbToHex(0, 255, 0)); // #00ff00

该实例中,我们定义了一个 RGB 转 HEX 的函数 rgbToHex,它将 RGB 数值转换为 HEX 格式,并在控制台输出 RGB 为 0,255,0 的 HEX 数值 #00ff00。

六、RGB转RGB延迟

当我们将 RGB 导入到一些设备或操作系统时,可能会导致颜色变浅或变暗。这就是 RGB 延迟现象。使用以下公式,我们可以将 RGB 延迟转换为正常的 RGB 数值:

R = 255 * (R / 255) ** 2.2
G = 255 * (G / 255) ** 2.2
B = 255 * (B / 255) ** 2.2

例如,RGB 数值为 R=255, G=165, B=0,我们需要将其转换为正常的 RGB 延迟。

R = 255 * (255 / 255) ** 2.2 = 255
G = 255 * (165 / 255) ** 2.2 = 140
B = 255 * (0 / 255) ** 2.2 = 0
因此,RGB 数值为 255,165,0 的 RGB 延迟值为 255,140,0。

七、RGBA转RGB

RGBA 是一种颜色模式,其中 A 表示 Alpha 透明度。在有些情况下,我们需要将 RGBA 转换为 RGB。例如,在网页设计中,我们需要将 RGBA 格式的透明背景转换为 RGB 格式。

要将 RGBA 色彩模式转为 RGB,需要使用以下公式:

R = (1 - A) * R + A * B
G = (1 - A) * G + A * B
B = (1 - A) * B + A * B

其中 R、G、B 表示 RGB 数值,A 表示 Alpha 透明度。

例如,RGBA 数值为 R=255, G=99, B=71, A=0.5。我们需要将其转换为 RGB 数值。

R = (1 - 0.5) * 255 + 0.5 * 0 = 127.5 = 128
G = (1 - 0.5) * 99 + 0.5 * 0 = 49.5 = 50
B = (1 - 0.5) * 71 + 0.5 * 0 = 35.5 = 36
因此,RGBA 数值为 255,99,71,0.5 对应的 RGB 数值为 128,50,36。

总结

RGB 转 HEX 是网站设计中最为常用的操作之一。在我们进行网站配色时,经常需要将 RGB 数值转为 HEX 格式,以便在 CSS 中进行使用。在本文中,我们分别从 RGB 色彩模式的数值转换为 HEX 色彩模式、RGB 转换、RGB 色彩模式转为 YCbCr、RGB 色彩模式转为 CMYK、RGB 色彩模式转为 16 进制格式、RGB 延迟和 RGBA 色彩模式转为 RGB 等多个方面进行了详细讨论,相信对网站设计师们能够有所帮助。

RGB转HEX的应用

2023-05-18
Hex转RGB

2023-05-21
详解hex函数及其用法

2023-05-20
CSS Hex Code Color Picker

2023-05-12
Python实现二进制11110000的转换及应用

2023-05-13
java方法整理笔记(java总结)

2022-11-08
印象笔记记录java学习(Java成长笔记)

2022-11-12
CSS Hex Colors

2023-05-12
CSS中的Hex颜色码是什么?

一、Hex颜色码的介绍 在前端开发中,颜色的选取是非常重要的一部分。CSS中提供了多种选取颜色的方式,其中Hex颜色码是最广泛使用的一种。Hex颜色码是指采用16进制(Hexadecimal)表示颜色

2023-12-08
when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${item.id} [in template "article/detail/index.ftl" at line 48, column 106] ---- Java stack trace (for programmers): ---- freemarker.core.InvalidReferenceException: [... Exception message was already printed; see it above ...] at freemarker.core.InvalidReferenceException.getInstance(InvalidReferenceException.java:134) at freemarker.core.EvalUtil.coerceModelToTextualCommon(EvalUtil.java:481) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:401) at freemarker.core.EvalUtil.coerceModelToStringOrMarkup(EvalUtil.java:370) at freemarker.core.DollarVariable.calculateInterpolatedStringOrMarkup(DollarVariable.java:104) at freemarker.core.DollarVariable.accept(DollarVariable.java:63) at freemarker.core.Environment.visit(Environment.java:371) at freemarker.core.IteratorBlock$IterationContext.executedNestedContentForCollOrSeqListing(IteratorBlock.java:321) at freemarker.core.IteratorBlock$IterationContext.executeNestedContent(IteratorBlock.java:271) at freemarker.core.IteratorBlock$IterationContext.accept(IteratorBlock.java:244) at freemarker.core.Environment.visitIteratorBlock(Environment.java:645) at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:108) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:94) at freemarker.core.Environment.visit(Environment.java:335) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.Environment.visit(Environment.java:341) at freemarker.core.Environment.process(Environment.java:314) at freemarker.template.Template.process(Template.java:383) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.processTemplate(FreeMarkerView.java:332) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.doRender(FreeMarkerView.java:266) at org.springframework.web.servlet.view.freemarker.FreeMarkerView.renderMergedTemplateModel(FreeMarkerView.java:220) at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:181) at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1431) at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1167) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1106) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at com.software.filter.HttpSpiderIdentifyFilter.doFilter(HttpSpiderIdentifyFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at java.base/java.lang.VirtualThread.run(VirtualThread.java:309)