/gimpfu-iexec

iExec decentralized application for distributing the computation of gimp's batch mode image processing.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

gimpfu-iexec

Distributed gimpfu execution

before

after

This application leverages gimp's batch mode in order to apply a set of effects on multiple images. The computational processing can be negociated with iExec workers.

Prerequisites

Please refer to the iExec documentation

Running locally

For more visually appealing results, use higher quality images.

Create your input and output folders, then pass them as a parameters in your docker run :

docker build . --tag gimpfu-iexec
docker run --rm -v /home/user/iexec_in:/iexec_in -v /home/user/iexec_out:/iexec_out -e IEXEC_IN=/iexec_in -e IEXEC_OUT=/iexec_out gimpfu-iexec

The result can be found in $IEXEC_OUT

Running with iExec

For distributed execution testing purposes, use low quality images.

This section assumes you have:

  • Created and filled your wallet with ETH + RLC
  • Configured your API keys and chain configuration files (chain.json)
  • Deployed your docker image to Docker Hub
  • Deployed your application to iExec

Please refer to the quickstart guide to perform the necessary steps.

Executing in the goerli testnet :

iexec app run --watch --input-files <image url 1>,<image url 2> --chain goerli --workerpool <address>

Additional running options can be found here.

You'll find below a minimalistic version of the configuration files :

chain.json
{
  "default": "goerli",
  "chains": {
    "goerli": {
      "id": "5"
    }
  },
  "providers": {
    "infura": {
      "projectId": "<infura_projet_id>",
      "projectSecret": "<infura_projet_secret>"
    },
    "quorum": 1
  }
}
iexec.json
{
  "app": {
    "owner": "<your_ethereum_wallet_address>",
    "name": "gimpfu-iexec",
    "type": "DOCKER",
    "multiaddr": "registry.hub.docker.com/<docker_username>/<docker_image_name>:<docker_image_version>",
    "checksum": "<docker_image_checksum>",
    "mrenclave": ""
  }
}
Fetching results
iexec task show <task_id> --download my-app-result --chain goerli && unzip my-app-result.zip -d my-app-result

You can also download your results using the iExec explorer.


The tunnel

The following video was made using this gimpfu script in order to process more than 80 files with 4k resolution: https://vimeo.com/490181629