⚡ PW²
A library that easily allows you to re-scale your images to the right power of two dimensions.
Installation
npm i pw2
Backend Usage
Combine ⚡PW² with fs
and resize your textures with only 8 lines of code.
const fs = const createPw2 RESIZING_MODES = const pw2 = { const inputFile = await fs const nearestBuffer = await pw2 fs}
FrontEnd Usage
Hook the handleFileUpload
function to your file input 'change' event, and use file-saver
to download the blob easilly.
const pw2 = { const file = evttargetfiles0 const fileReader = fileReaderonload = async const resizedFile = await pw2 const resizedFileBlob = resizedFile fileReader}
But Why ?
Games and real-time applications, in general, tend to prefer images and textures with power-of-two dimensions, because they make it easier to generate mipmaps, consume less GPU memory, and increase the overall performance for shader operations.
However, finding the right power-of-two values for each dimension of each texture of each model in your application sounds time-consuming, and it is. ⚡PW² born from the necessity to make this a no-brainer, quick and easy process.
⚡PW² uses Jimp under the hood to get your texture current dimensions and re-scale it to the right power-of-two dimensions.
This library was developed for the cs50 Final Project assignment.
License
TODO
- Fix PREVIOUS_PW2 enum value to PREVIOUS_PW2 on src/resizingModes.ts
- Fix Ipw2 Interface methods to accept Pw2AllowedInputs as type to file input on src/pw2.ts
- Export Ipw2 Interface to external use on src/pw2.ts and src/index.ts
- Fix any English misspells (sorry guys, it's not my first language 🤷♂️)