Я люблю Lua. I love Lua.

Конвертор цвета из hex в RGBA

Posted in Uncategorized by ilovelua on Январь 23, 2012

Встала задача, превратить цвет, заданный в форме 0x37abc8ff в четыре числовых значения RGBA. Для этого можно воспользоваться какой-нибудь Lua библиотекой для работы с битами(например, http://bitop.luajit.org/), а можно это сделать по рабоче-крестьянки, поскольку Lua умеет парсить hex-числа (идея украдена отсюда: http://www.javascripter.net/faq/hextorgb.htm):

function parseHexColor(text)
  local r = tonumber('0x' .. string.sub(text, -8, -7))
  local g = tonumber('0x' .. string.sub(text, -6, -5))
  local b = tonumber('0x' .. string.sub(text, -4, -3))
  local a = tonumber('0x' .. string.sub(text, -2))

  return r, g, b, a
end
Advertisements
Tagged with: , ,

комментария 4

Subscribe to comments with RSS.

  1. Valery said, on Январь 24, 2012 at 4:20 пп

    Lua 5.2 уже поддерживает битовые операции. Но и без них можно избежать парсинга строки:
    i=tonumber(«0x11223344»)
    i,f=math.modf(i/256,256)
    a=f*256
    i,f=math.modf(i/256,256)
    b=f*256
    r,f=math.modf(i/256,256)
    g=f*256

    • ilovelua said, on Январь 25, 2012 at 4:49 дп

      Отлично! Только math.modf() принимает один параметр:

      i, f = math.modf(i / 256)
      a = f * 256
      i, f = math.modf(i / 256)
      b = f * 256
      r, f = math.modf(i / 256)
      g = f * 256
      
      • Valery said, on Январь 25, 2012 at 6:27 дп

        Ага, это я с math.fmod перепутал )

  2. Valery said, on Январь 25, 2012 at 6:34 дп

    А на Lua 5.2 еще проще:
    r = bit32.extract (i, 0, 8)
    g = bit32.extract(i, 8, 8)
    b = bit32.extract(i, 16, 8)
    a = bit32.extract(i, 24, 8)


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: