Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/monostream/tifig
A fast HEIF image converter aimed at thumbnailing
https://github.com/monostream/tifig
ffmpeg heic heif image ios iphone jpeg libvips performance vips
Last synced: 3 months ago
JSON representation
A fast HEIF image converter aimed at thumbnailing
- Host: GitHub
- URL: https://github.com/monostream/tifig
- Owner: monostream
- License: apache-2.0
- Created: 2017-11-07T12:40:51.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2022-11-08T16:34:14.000Z (about 2 years ago)
- Last Synced: 2024-08-02T06:17:35.127Z (6 months ago)
- Topics: ffmpeg, heic, heif, image, ios, iphone, jpeg, libvips, performance, vips
- Language: C++
- Homepage:
- Size: 38.6 MB
- Stars: 407
- Watchers: 18
- Forks: 50
- Open Issues: 28
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# tifig
Converts HEIF images created on iOS 11 devices as fast as ~~humanly~~ possible.
*NOTE*: While we do not have the time to actively maintain tifig anymore, it is functional at a very alpha state. We are open to new maintainers taking the lead.
## Build Dependencies
* `libvips` >= 8.6
* `libavcodec` >= 3.1 (ffmpeg)
* `libswscale` >= 3.1 (ffmpeg)#### macOS aka OSX
This one-liner should get you going:
brew install cmake vips ffmpeg pkg-config
#### Linux
First of all, to just try out tifig, the easiest way is to [use our static builds](https://github.com/monostream/tifig/releases).
However, if you do want to build from source, verify carefully that the minimally required versions are actually shipped and installed with your distro and release.
For ffmpeg, check the output of:
ffmpeg -version
Assuming you are using a ubuntu based system, this should help if your versions of 'libavcodec' and 'libswscale' is too old:
sudo add-apt-repository -y ppa:jonathonf/ffmpeg-3
sudo apt-get update
sudo apt-get install libavcodec-dev libswscale-devSince tifig requires quite a modern version of `libvips`, building from source is probably required. [Follow the instructions here](http://jcupitt.github.io/libvips/install.html#building-libvips-from-a-source-tarball) .
Again on ubuntu, something like this should do the trick:
sudo apt-get install build-essential pkg-config libglib2.0-dev libexpat1-dev libjpeg-dev libexif-dev libpng-dev libtiff-dev
wget https://github.com/jcupitt/libvips/releases/download/v8.6.1/vips-8.6.1.tar.gz
tar xzf vips-8.6.1.tar.gz
cd vips-8.6.1
./configure
make
sudo make install## Build
git clone --recursive https://github.com/monostream/tifig.git
mkdir tifig/build && cd tifig/build
cmake ..
make## Usage
Convert the fullsize picture:
# tifig -v -p image.heic output.jpg
Grid is 4032x3024 pixels in tiles 8x6
Export & decode HEVC: 97ms
Saving image: 55ms
Total Time: 160msCreate a thumbnail with max width of 800px:
# tifig -v -p --width 800 image.heic thumbnail.jpg
Grid is 4032x3024 pixels in tiles 8x6
Export & decode HEVC: 113ms
Saving image: 100ms
Total Time: 243msCreate a cropped thumbnail to match size exactly:
# tifig -v -p --crop --width 400 --height 400 1_portrait.heic thumbnail.jpg
Grid is 4032x3024 pixels in tiles 8x6
Export & decode HEVC: 105ms
Saving image: 125ms
Total Time: 234msWhen a size smaller or equal to 240x240 is requested, tifig will automatically use the embedded thumbnail.
## Installing
We release tifig as static x86_64 binary that should work on any linux without installing dependencies. The only requirement is glibc with a minimal version of 2.14. Just copy the binary to `/usr/local/bin` or wherever you want to.
## ToDo's
* ~~Testing~~
* ~~Create independant static binary~~
* ~~Keep exif metadata in coverted images~~
* Cleanup and optimizing
* Replace Nokia library with DigiDNAs ISOBMFF parser
* Carry over color profiles
* Support single image HEIC
* Improve thumbnailing
## Software Used / Libraries* HEIF by Nokia Technologies https://github.com/nokiatech/heif
* libvips https://github.com/jcupitt/libvips
* ffmpeg https://www.ffmpeg.org/
* cxxopts https://github.com/jarro2783/cxxopts
***Suggestions for improvements and Pull Requests highly welcome!***