Java Color integer to RGB string in JavaScript

情到浓时终转凉″ 提交于 2019-12-24 00:03:04

问题


I'm trying to use some Java Color int values from a database in Javascript. What's the correct way to convert the Java color int (like -2147473665) to an RGB string (like '#ffff00') using Javascript?

Right now I'm taking the number, flipping it negative, converting it to hex, and adding a hashtag, but that gives me the wrong color. (The substring is to account for the alpha channel)

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);
  });
}

For example, the int -16767233 should be navy blue, but it's showing up as yellow.

-16731137 should be light blue, but it's red

-1218518 should be orange, but it's blue

Correct colors:

This is what I get in JS with my current code

What is going on here?? I know it's supposed to be RGB, and not HSV, so that's not it...


回答1:


You need to handle signed integers. See How to convert decimal to hex in JavaScript?

console.log(getHexColor(-16731137)); // light blue
console.log(getHexColor(-1218518)); // orange

function getHexColor(number){
    return "#"+((number)>>>0).toString(16).slice(-6);
}


来源:https://stackoverflow.com/questions/37795241/java-color-integer-to-rgb-string-in-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!