I made an extension to encode and decode external WebP image files.
WebP can use both lossless and lossy images, and supports alpha channels, so you can use images with transparency like a PNG, but also compress them like a JPEG.
webp.decode(image [, options])
Decode a WebP image into an image buffer. Use optional Lua table with WebPDecoderOptions as keys. Returns buffer, width, and height.
local buf, w, h = webp.decode(sys.load_resource("/assets/image_1.webp"))
resource.set_texture(go.get("#sprite", "texture0"), {
width = w,
height = h,
type = resource.TEXTURE_TYPE_2D,
format = resource.TEXTURE_FORMAT_RGBA,
num_mip_maps = 1
}, buf)
webp.encode(buffer, width, height [, options])
Encode a image buffer into a WebP image. Use optional Lua table with WebPConfig fields as keys. Returns string with WebP image.
local buf, w, h = webp.decode(image)
local webp_image = webp.encode(buf, w, h, {quality = 50})
local f = io.open("out.webp", "wb")
if f then
f:write(webp_image)
f:close()
end
webp.get_info(image)
Get information about a WebP image. Returns table with following fields: width, height, has_alpha, has_animation, lossy.
local info = webp.get_info(image)
print(info.width, info.height)
