【问题标题】:Java color int to RGB in Javascript [duplicate]Javascript中的Java颜色int到RGB [重复]
【发布时间】:2016-06-12 00:43:06
【问题描述】:

我正在尝试在 Javascript 中使用数据库中的一些 Java Color int 值。使用Javascript将Java颜色int(如-2147473665)转换为RGB字符串(如'#ffff00')的正确方法是什么?将它们直接转换为十六进制会使它们全部变成深蓝色或黑色......

(编辑)第一个答案有帮助,我现在得到黑色以外的颜色,但它们仍然不是正确的色调。 (我知道 Google Maps API 采用 RGB,而不是 HSV,所以不是这样......)

function getClients() {
  var query = new Parse.Query(Client);

  query.each(function(client) {
    var clientName = client.get("clientName");
    var borderColor = '#' + (-client.get("borderColor")).toString(16);
    var fillColor = '#' + (-client.get("fillColor")).toString(16).substr(2);
    var outline = client.get("outline");

    console.log(client.get("borderColor"));
    console.log(client.get("borderColor").toString(16));
    console.log(hexToRGB(client.get("borderColor")));

    var clientPoly = new google.maps.Polygon({
      paths: outline,
      strokeColor: borderColor,
      strokeOpacity: 1,
      strokeWeight: 2,
      fillColor: fillColor,
      fillOpacity: 0.5
    });

    clientPoly.setMap(mMap);
  });
}

例如,int -16767233 应该是海军蓝,但它显示为黄色。

-16731137 应该是浅蓝色的,但它是红色的

-1218518 应该是橙色的,但它是蓝色的

正确的颜色:

这是我使用当前代码在 JS 中得到的

【问题讨论】:

  • 您希望 -16767233 转换成什么具体的 RGB 值?
  • 我不知道确切的 RGB 值,这就是我需要转换它们的原因。不过它应该是蓝色的。

标签: javascript java colors rgba


【解决方案1】:

是的,您可以将 int 转换为 hex,如下所示:

var num = 2147473665;

var hexString = num.toString(16);

十六进制字符串现在是 7FFFD901

var alphalessHexString = hexString.substr(2, 6)

alphalessHexString 现在是 FFD901

将所有内容放在一行中:

var num = 2147473665;
var alphalessHexString = num.toString(16).substr(2, 6)

alphalessHexString 现在是 FFD901

【讨论】:

  • 这似乎无法正常工作...我是否必须创建一个子字符串才能摆脱 alpha?
  • 我刚刚编辑了完整的答案。
  • 这似乎也不是......我得到的值是 -7f0000、-ff4c01、-ff5c2e 等 - 它们都是深灰色或蓝色。它们也不包含正确的值作为子字符串......也许我不能直接将它转换为十六进制值?原始 int 来自 ARGB 格式的 Java 颜色对象
  • 在上面发布您的完整代码。我发布的示例对我来说很好。
  • 安德鲁,你的开头是负数 because of the Java int type。因此,在您的 JS 中,可能先将其转换为正数:(-num).toString(16),substr(2) 然后 -2147473665 变为 ffd901。
【解决方案2】:

如果你有颜色 ARGB 那么你要做的是

  int hx=-16767233 & 0x00ffffff;
  g2.setColor(new Color(hx));
  g2.fillRect(0, 0, w, h);

现在 hx 是没有 alpha 的 RGB。

【讨论】:

  • 这看起来像 Java... 我正在尝试在 Javascript 中执行此操作
猜你喜欢
  • 2016-10-14
  • 2014-05-02
  • 1970-01-01
  • 2011-12-22
  • 2012-06-15
  • 2013-08-04
  • 2021-04-03
  • 2016-03-31
  • 2017-09-05
相关资源
最近更新 更多