- Tool to generate an image from one of your in-game party in just a few clicks, to use for Videos or anything else.
- Tested on Python 3.11.
- pyperclip to read/write the clipboard.
- Pillow for image processing.
- aiohttp for asset downloads.
pip install -r requirements.txt
to install all the modules.
Version 10.0 drops support for multiprocessing and uses Asyncio instead.
It results in the following changes:
- Decreased memory usage (around a tenth of before).
- Possibly longer time to process the images.
- The application is now singled threaded.
pip install -r requirements.txt
must be run again with this new version.
The previous version is still available here.
- Install the requirements with the command above.
- Double click on
gbfpib.pyw
. - Click on the
Bookmark
button. A javascript code will be copied to your clipboard. - On the Chrome (or equivalent) browser you are using, make a new bookmark.
- Right click that bookmark, select
edit
. - Paste the javascript code into the url field.
- Change the bookmark name if you want to.
You are done.
Do note, if requirements haven't been installed properly, the script will automatically try to install them. It might ask for administrator rights, if required.
- Go on the party screen you want to export.
- Click the bookmarklet. If nothing happens, everything went well.
- Open
gbfpib.pyw
again. - This time, click on the
Build Images
button. - If everything went well, the image should appear beside
gbfpib.pyw
under the nameparty.png
. Note: if you enabled the corresponding settings, it will also generateskin.png
and/oremp.png
. - If it didn't, something went wrong, probably at the step 2.
Quality
: Let you control the output size (maximum and default recommended setting is 4K, minimum is 720p).Caching
: If enabled, downloaded images will be saved on disk (in the cache folder) for later uses. Delete the folder to reset its content.Do Skins
: If enabled, it will also generateskin.png
.Do EMP
: If enabled, it will also generateemp.png
.Auto Update
: If enabled, will check if an update is available on app startup.
Cache Assets
: If enabled, assets will be cached in thecache
folder to increase speed of future processings.HP Bar on skin.png
: If enabled, your Estimate Damage HP setting will be displayed onskin.png
.Do Skins
setting must be enabled for it to work.Guess Opus/Ultima Key
: If enabled, it will attempt to guess your Dark Opus and Ultima third skill to display the key image instead of the generic skill icon. Not 100% accurate.
For advanced users:
-fast
: Automatically start the image building process. Be sure to have the party data ready in your clipboard. If EMP datas are found instead, it will be saved in theemp
folder.-nowait
: Skip the 10 seconds waiting time at the end when using-fast
.-cmd
: Let you access the command line menu. Can't be used with-fast
.-debug
: For debugging purpose.
Images from the GBF asset servers can be saved for later uses.
You only need to enable the option to make it work.
If some of those images are updated in game, all you need is to delete the cache folder so they are redownloaded later.
You can also delete the folder if it gets too big.
No additional setup is required, it uses the same bookmark.
- Go to character EMP page.
- Click the bookmarklet. If nothing happens, everything went well.
- In
gbfpib.pyw
, click on theAdd EMP
button.
This Character's EMP will be saved in the emp
folder, as a .json
file.
To update it, simply repeat the process.
Keep in mind:
- The
Do EMP
setting must be enabled oremp.png
won't be generated when clickingBuild Images
. - If game language differ at the time you saved the EMP and when generating a Party image, EMPs will display in the original language.
(Only if the HP Bar on skin.png
setting is enabled)
If you click the bookmarklet with the Estimated Damage calculator open, it will grab the current HP percentage and display it on skin.png
, instead of the off-element estimated damage.
If you don't open the calculator, it will assume your current HP is set to 100%.
By default, the game doesn't provide you the ID of the support summon set in your damage calculator.
There are a few ways to go around this issue:
- If you open the damage calculator BEFORE clicking the bookmarklet, the ID will be fetched properly. You need to open it again if you change the party without reloading the page or the last loaded one will stay.
- Alternatively, the bookmarklet will fetch the name of the support summon and search its ID on gbf.wiki. However, be warned this method isn't perfect, especially if you are playing in japanese or if you switch between parties.
- If the above two methods don't work, the name of the support summon will simply be written instead.
Following the Twitter debacle, and GBFTM relying on Twitter assets, I reworked it into a new project.
As a result, support for the existing GBFTM project has been discontinued.
GBFTMR can be imported to also generate a thumbnail.
Simply click Set Path
and select the folder where GBFTMR is located.
GBFTMR must have been set beforehand or it might not work properly.
It's currently compatible with version 1.25 and higher (Ideally, always use the latest version to have the latest bugfixes).
The script has a built-in auto updater.
I recommend using it, for ease of use.
If you can't or don't want to use it, simply download the latest version and redo the Setup steps.
Like the licence specifies, you are free to use this software as you want, free of charge.
Do note:
- If you want to credit me, you can link this page or name me (Mizako or Miza).
- If you want to report a bug, open an issue or contact me on Twitter, as long as I continue to develop and improve it.
- I DON'T take feature requests. This tool is developped for my own use first and foremost. This is why I don't advertise it.
Some insights on how the image processing works:
- Upon starting, it reads your clipboard and check if there is any valid data exported with the bookmark.
- Because Python multithreading is terribly slow, it relies on multiprocessing instead: Up to 6 new proccesses are created. One purely for the party, one for the summons, one for the weapon grid, one for the weapon modifiers and one for EMPs. Each process returns the images, which are then assembled in another process as simple layers, by putting them one on top of each other.
- For memory usage and speed reasons,
skin.png
is also composed of some simple layers, which are added on top of a copy ofparty.png
. This way, we don't "redraw"party.png
twice. Do note, however, theskin.png
processing takes place even when the setting is disabled.
The app will crash when using some alternate portrait from some skins such as Cidala's. A workaround is applied in the function fix_character_look()
. I'll add more if I find more but you can add it yourself here or report them to me.
Here's what the resulting images look like:
(Screenshots taken on version 8.3)