편집 요약 없음 |
편집 요약 없음 태그: 수동 되돌리기 |
||
(같은 사용자의 중간 판 10개는 보이지 않습니다) | |||
15번째 줄: | 15번째 줄: | ||
-- RGB에서 헥스 코드 생성 | -- RGB에서 헥스 코드 생성 | ||
local function rgb_to_hex(r, g, b) | local function rgb_to_hex(r, g, b) | ||
return string.format("#%02X%02X%02X", r, g, b) | return string.format("#%02X%02X%02X", math.floor(r), math.floor(g), math.floor(b)) | ||
end | end | ||
-- 밝기 조정 | -- 밝기 조정 (brighten) | ||
local function | local function brighten(r, g, b, percentage) | ||
local function | local function adjust(value) | ||
return value + ((255 - value) * percentage / 100) | |||
end | end | ||
return adjust(r), adjust(g), adjust(b) | |||
end | |||
return | -- 어둡게 조정 (darken) | ||
local function darken(r, g, b, percentage) | |||
local function adjust(value) | |||
return value - (value * percentage / 100) | |||
end | |||
return adjust(r), adjust(g), adjust(b) | |||
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]:match("%d+")) or 0 | local percentage = tonumber(frame.args[3]:match("%d+")) or 0 -- 기본 퍼센트 | ||
if percentage < 0 or percentage > 100 then | if percentage < 0 or percentage > 100 then | ||
40번째 줄: | 44번째 줄: | ||
end | end | ||
-- | -- RGB 변환 | ||
local | local r, g, b, err = hex_to_rgb(hex) | ||
if | if not r then | ||
return err | |||
return | |||
end | end | ||
-- 방향에 따른 조정 | |||
if direction == "brighten" then | |||
return | r, g, b = brighten(r, g, b, percentage) | ||
elseif direction == "darken" then | |||
r, g, b = darken(r, g, b, percentage) | |||
else | |||
return "방향은 'brighten' 또는 'darken'만 가능합니다." | |||
end | end | ||
-- RGB 값을 헥스로 변환 | |||
return rgb_to_hex(r, g, b) | return rgb_to_hex(r, g, b) | ||
end | end | ||
return p | return p |
2025년 4월 19일 (토) 09:42 기준 최신판
이 모듈에 대한 설명문서는 모듈:AdjustBrightness/설명문서에서 만들 수 있습니다
local p = {}
-- 헥스 코드에서 RGB 추출
local function hex_to_rgb(hex)
hex = hex:match("^#?(%x%x%x%x%x%x)$")
if not hex then
return nil, "유효하지 않은 헥스 코드입니다. 6자리 색상 코드 (#RRGGBB)를 입력하세요."
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
-- 밝기 조정 (brighten)
local function brighten(r, g, b, percentage)
local function adjust(value)
return value + ((255 - value) * percentage / 100)
end
return adjust(r), adjust(g), adjust(b)
end
-- 어둡게 조정 (darken)
local function darken(r, g, b, percentage)
local function adjust(value)
return value - (value * percentage / 100)
end
return adjust(r), adjust(g), adjust(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]:match("%d+")) or 0 -- 기본 퍼센트
if percentage < 0 or percentage > 100 then
return "퍼센트는 0%에서 100% 사이여야 합니다."
end
-- RGB 변환
local r, g, b, err = hex_to_rgb(hex)
if not r then
return err
end
-- 방향에 따른 조정
if direction == "brighten" then
r, g, b = brighten(r, g, b, percentage)
elseif direction == "darken" then
r, g, b = darken(r, g, b, percentage)
else
return "방향은 'brighten' 또는 'darken'만 가능합니다."
end
-- RGB 값을 헥스로 변환
return rgb_to_hex(r, g, b)
end
return p