Hello everyone!
I want to make script for splitting RGB Channel to new layers.
I got error message (code attached below)
“lua:25: attempt to index a nil value.”
I think layerR is created but no contents on cel(i.e. nothing in layer) because the layer is newly created is the problem.
How can I solve it?
I’m not familiar with English, If there are something wrong please forgive me. Thanks!
Code
if app.apiVersion < 1 then
return app.alert("This script requires Aseprite v1.2.10-beta3")
end
local sprite = app.activeSprite
local frame = app.activeFrame
local currentLayer = app.activeLayer
local img = currentLayer:cel(frame).image
local img_w = sprite.width
local img_h = sprite.height
local layerR = sprite:newLayer()
layerR.name = currentLayer.name .. "_R"
local layerG = sprite:newLayer()
layerG.name = currentLayer.name .. "_G"
local layerB = sprite:newLayer()
layerB.name = currentLayer.name .. "_B"
app.refresh()
local img_R = layerR:cel(frame).image
local img_G = layerG:cel(frame).image
local img_B = layerB:cel(frame).image
for y = 0, img_h - 1, 1 do
for x = 0, img_w - 1, 1 do
-- get pixel value
local color = img:getPixel(x, y)
local r = Color(color.red, 0, 0, 255)
local g = Color(0, color.green, 0, 255)
local b = Color(0, 0, color.blue, 255)
img_R:drawPixel(x, y, r)
img_G:drawPixel(x, y, g)
img_B:drawPixel(x, y, b)
end
end
app.refresh()