모듈:AdjustBrightness: 두 판 사이의 차이

편집 요약 없음
편집 요약 없음
1번째 줄: 1번째 줄:
local p = {}
local p = {}


-- 헥스 코드에서 RGB 추출
local function hex_to_rgb(hex)
local function hex_to_rgb(hex)
     hex = hex:gsub("#", "")
     hex = hex:gsub("#", "")
     if #hex ~= 6 then
    -- 헥스 코드가 6자리인지 확인
         return nil, nil, nil -- 잘못된 헥스 코드 처리
     if #hex ~= 6 or not hex:match("^[0-9a-fA-F]+$") then
         return nil, nil, nil -- 유효하지 않은 헥스 코드 처리
     end
     end
     local r = tonumber(hex:sub(1, 2), 16)
     local r = tonumber(hex:sub(1, 2), 16)
12번째 줄: 14번째 줄:
end
end


-- RGB에서 헥스 코드 생성
local function rgb_to_hex(r, g, b)
local function rgb_to_hex(r, g, b)
     return string.format("#%02X%02X%02X", math.floor(r), math.floor(g), math.floor(b))
     return string.format("#%02X%02X%02X", math.floor(r), math.floor(g), math.floor(b))
end
end


-- 밝기 조정
local function adjust_brightness(r, g, b, factor)
local function adjust_brightness(r, g, b, factor)
     r = math.min(255, math.max(0, r * factor))
     r = math.min(255, math.max(0, r * factor))
23번째 줄: 27번째 줄:
end
end


-- 메인 함수
function p.adjust(frame)
function p.adjust(frame)
     local hex = frame.args[1] or "#808080"
     local hex = frame.args[1] or "#808080" -- 기본값: 중간 회색
     local direction = frame.args[2] or "brighten"
     local direction = frame.args[2] or "brighten" -- 기본값: 밝게
     local percentage = tonumber(frame.args[3]:gsub("%%", ""))
     local percentage = tonumber(frame.args[3]:gsub("%%", ""))
      
 
     -- 퍼센트값 유효성 검사
     if not percentage then
     if not percentage then
         return "퍼센트값이 올바르지 않습니다. 숫자로 입력하세요 (예: 50%)."
         return "퍼센트값이 올바르지 않습니다. 숫자로 입력하세요 (예: 50%)."
36번째 줄: 42번째 줄:
     end
     end


    -- 밝기 조정 방향 설정
     local factor = 1 + (percentage / 100)
     local factor = 1 + (percentage / 100)
     if direction == "darken" then
     if direction == "darken" then
43번째 줄: 50번째 줄:
     end
     end


    -- 헥스 코드에서 RGB 추출
     local r, g, b = hex_to_rgb(hex)
     local r, g, b = hex_to_rgb(hex)
     if not r or not g or not b then
     if not r or not g or not b then
         return "유효하지 않은 헥스 코드입니다."
         return "유효하지 않은 헥스 코드입니다. 올바른 6자리 헥스 코드를 입력하세요 (예: #4a90e2)."
     end
     end


    -- 밝기 조정 후 새로운 색상 반환
     r, g, b = adjust_brightness(r, g, b, factor)
     r, g, b = adjust_brightness(r, g, b, factor)
     return rgb_to_hex(r, g, b)
     return rgb_to_hex(r, g, b)

2025년 4월 19일 (토) 09:03 판

이 모듈에 대한 설명문서는 모듈:AdjustBrightness/설명문서에서 만들 수 있습니다

local p = {}

-- 헥스 코드에서 RGB 추출
local function hex_to_rgb(hex)
    hex = hex:gsub("#", "")
    -- 헥스 코드가 6자리인지 확인
    if #hex ~= 6 or not hex:match("^[0-9a-fA-F]+$") then
        return nil, nil, nil -- 유효하지 않은 헥스 코드 처리
    end
    local r = tonumber(hex:sub(1, 2), 16)
    local g = tonumber(hex:sub(3, 4), 16)
    local b = tonumber(hex:sub(5, 6), 16)
    return r, g, b
end

-- RGB에서 헥스 코드 생성
local function rgb_to_hex(r, g, b)
    return string.format("#%02X%02X%02X", math.floor(r), math.floor(g), math.floor(b))
end

-- 밝기 조정
local function adjust_brightness(r, g, b, factor)
    r = math.min(255, math.max(0, r * factor))
    g = math.min(255, math.max(0, g * factor))
    b = math.min(255, math.max(0, b * factor))
    return r, g, b
end

-- 메인 함수
function p.adjust(frame)
    local hex = frame.args[1] or "#808080" -- 기본값: 중간 회색
    local direction = frame.args[2] or "brighten" -- 기본값: 밝게
    local percentage = tonumber(frame.args[3]:gsub("%%", ""))

    -- 퍼센트값 유효성 검사
    if not percentage then
        return "퍼센트값이 올바르지 않습니다. 숫자로 입력하세요 (예: 50%)."
    end

    if percentage < 0 or percentage > 100 then
        return "퍼센트는 0%에서 100% 사이여야 합니다."
    end

    -- 밝기 조정 방향 설정
    local factor = 1 + (percentage / 100)
    if direction == "darken" then
        factor = 1 - (percentage / 100)
    elseif direction ~= "brighten" then
        return "방향은 'brighten' 또는 'darken'만 가능합니다."
    end

    -- 헥스 코드에서 RGB 추출
    local r, g, b = hex_to_rgb(hex)
    if not r or not g or not b then
        return "유효하지 않은 헥스 코드입니다. 올바른 6자리 헥스 코드를 입력하세요 (예: #4a90e2)."
    end

    -- 밝기 조정 후 새로운 색상 반환
    r, g, b = adjust_brightness(r, g, b, factor)
    return rgb_to_hex(r, g, b)
end

return p