CoronaSDKにて特定のオブジェクトをキャプチャしてサムネイルにしたかったのですが、なかなか上手く画像をリサイズできなくて苦戦しました。正しいやり方かどうかわかりませんが、それなりに動いたので以下にメモとして共有しておきます。
Corona SDK / version : 2016.2949 (2016.9.15)
test.lua
-- 画像の縮小&保存処理
local function saveImage(canvas, newFileName, width, height)
local resizeCanvas = display.capture(canvas)
-- ポジションを移動しないと縮小処理が上手くいかない
resizeCanvas.x = display.actualContentWidth * 0.5
resizeCanvas.y = display.actualContentHeight * 0.5
-- 誤差によりぴったり指定サイズにならないが、近いサイズに縮小
resizeCanvas:scale(width * display.contentScaleX / canvas.width,
height * display.contentScaleY / canvas.height)
-- 保存処理
local baseDir = system.DocumentsDirectory
display.save( resizeCanvas, newFileName, baseDir )
resizeCanvas:removeSelf()
resizeCanvas = nil
end
--
mainCanvas = display.newGroup()
mainCanvax.insert(...)
...
saveImage(mainCanvas, "tmp.png", 160, 240)